jpa关联非主键列,保存数据失败

例如
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,保存数据就不行,是因为必须关联主键么,我看网上也有很多关联非主键的,说明是可以这样做的,就是不知道什么地方有问题?

阅读 3.7k
1 个回答

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;
    ...
}

我本地测试运行通过,测试环境为:

  • Spring Boot 2.0.4.RELEASE
  • Hibernate JPA 2.1
  • Hibernate 5.2.17
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题