如何在JPA中定义单向OneToMany关系

我在JPA中使用实体映射存在以下问题。我有两个实体,第一个是Lookup,第二个是Text,它表示实体的翻译。现在,我需要将Lookup绑定到Text,但是我不希望Text引用Lookup。更复杂的是,Text在此关系中不使用其主键,而是在TXTHEAD_CODE列中定义的元代码

Lookup.java

@Entity

@Table(name = "DATREG")

public class Lookup implements PersistableEntity {

@Id

@Column(name = "DATREG_META_CODE")

private String metaCode;

@OneToMany

@JoinTable(name="TXT",

joinColumns=@JoinColumn(name="DATREG_META_CODE", referencedColumnName="TXTHEAD_CODE"),

inverseJoinColumns=@JoinColumn(name="DATREG_META_CODE"))

private List<Text> text;

Text.java

@Entity

@Table(name = "TXT")

public class Text {

@Id

@Column(name = "TXT_ID")

private Long id;

@Column(name = "TXTHEAD_CODE")

private String code;

因此,我尝试了这种方法(以及其他几种方法),但没有结果。我也不能在数据库中创建联接表,也不想将Lookup绑定到Text类。所以有人可以告诉我是否还有其他方法吗?

回答:

我从事JPA工作的圣经是Java Persistence

Wikibook。它有一个关于单向OneToMany的部分,说明了如何使用@JoinColumn批注进行此操作。就您而言,我想您会想要:

@OneToMany

@JoinColumn(name="TXTHEAD_CODE")

private Set<Text> text;

我使用Set而不是List,因为数据本身没有顺序。

上面使用的是默认值referencedColumnName,与Wikibook中的示例不同。如果这不起作用,请尝试一个明确的方法:

@OneToMany

@JoinColumn(name="TXTHEAD_CODE", referencedColumnName="DATREG_META_CODE")

private Set<Text> text;

以上是 如何在JPA中定义单向OneToMany关系 的全部内容, 来源链接: utcz.com/qa/413455.html

回到顶部