在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  網絡安全/ jpa關聯(lián)非主鍵列,保存數據失敗

jpa關聯(lián)非主鍵列,保存數據失敗

例如
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關聯(lián)
代碼如下,部分代碼省略

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);//關聯(lián)非主鍵code,保存數據就不行
...
stuRepository.save(stu);

之前關聯(lián)class的主鍵ID是沒有問題的,但是關聯(lián)非主鍵code,保存數據就不行,是因為必須關聯(lián)主鍵么,我看網上也有很多關聯(lián)非主鍵的,說明是可以這樣做的,就是不知道什么地方有問題?

回答
編輯回答
陌如玉

ManyToOne的配置有問題,修改成如下:

public class Student{
    @Id
    private String id;
    
    @Size(max = 20)
    private String code;
    
    @Size(max = 200)
    private String name;
    
    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinColumn(name="classCode")
    private Class class;
    ...
}

我本地測試運行通過,測試環(huán)境為:

  • Spring Boot 2.0.4.RELEASE
  • Hibernate JPA 2.1
  • Hibernate 5.2.17
2017年12月27日 21:02