[英]How to define a unidirectional OneToMany JPA relationship without any cascade?
[英]How to define unidirectional OneToMany relationship in JPA
JPA 中的实体映射存在以下问题。 我有两个实体,第一个是 Lookup,第二个是代表实体翻译的 Text。 现在我需要将 Lookup 绑定到 Text,但我不希望 Text 引用 Lookup。 为了使这更复杂,Text 在此关系中不使用其主键,而是使用TXTHEAD_CODE
列中定义的元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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.