如何在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