这两个代码之间有什么区别。第一个在我的外键上显示null,即个别Id。第二个不是。为什么呢?
//第一个代码:
@Entity
@JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" })
public class Individual {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "INDIVIDUAL_ID")
private Long individualId;
@OneToMany(mappedBy="individual",cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private List<Identification> identifications = new ArrayList<Identification>();
}
@Entity
public class Identification {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "IDT_ID")
private Long id;
@ManyToOne
@JoinColumn(name="individualId")
private Individual individual;
//第二个代码
//在第一个代码&amp;中替换了@OneToMany那么我只是不在识别类中添加@ManyToOne,它工作正常。为什么呢?
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "INDIVIDUAL_ID", referencedColumnName = "INDIVIDUAL_ID")
private List<Identification> identifications = new ArrayList<Identification>();
当我在谷歌搜索JPA教程时,第一个代码是我一直读到的代码。在父类中声明@OneToMany并添加mappedBy,在子类中声明@ManyToOne。但为什么第二个代码比第一个代码完美?它只是让我在父类中声明@OneToMany?
答案 0 :(得分:0)
在班级Identification
中,@JoinColumn
的名称与班级Individual
中的任何列都不匹配。它必须是数据库中列的名称,即INDIVIDUAL_ID:
@JoinColumn(name="INDIVIDUAL_ID")