例如
class表(class_id主键,class_code唯一)
class_id,class_code,class_name
student表(stu_id主键,class_code为class表的class_code)
stu_id,stu_code,stu_name,class_code
student表的class_code通过ManyToOne关联
代码如下,部分代码省略
public class Class{
@Id
private String id;
@Size(max = 20)
@Column(unique = true)
private String code;
@Size(max = 200)
private String name;
...
}
public class Student{
@Id
private String id;
@Size(max = 20)
private String code;
@Size(max = 200)
private String name;
@ManyToOne
@JoinColumn(name="classCode",referencedColumnName="code")
private Class class;
...
}
现在有一条student数据插入操作
@Autowired
private StudentRepository stuRepository;
Student stu = new Student();
Class class = new Class();
class.setCode("class_code值");
stu.setClass(class);//关联非主键code,保存数据就不行
...
stuRepository.save(stu);
之前关联class的主键ID是没有问题的,但是关联非主键code,保存数据就不行,是因为必须关联主键么,我看网上也有很多关联非主键的,说明是可以这样做的,就是不知道什么地方有问题?
ManyToOne的配置有问题,修改成如下:
我本地测试运行通过,测试环境为:
Spring Boot 2.0.4.RELEASE
Hibernate JPA 2.1
Hibernate 5.2.17