我正在尝试让以下类型的映射发挥作用
Table event has the following columns:
id (PK)
prodgroup
errandtype
table errandtype : errandtype
table prodgroup: prodgroup
我有相应的JPA类
@Entity
@Table(name="event")
public class MyEvent {
@Id
int id;
// what mapping should go here?
Prodgroup prodgroup;
// what mapping should go here?
ErrandType errandtype;
}
@Entity
public class Prodgroup {
@Id
private String prodgroup;
}
@Entity
public class ErrandType {
@Id
private String errandtype;
}
好吧,问题在代码中被标记为注释,但无论如何我都会尽量明确。
在上面的示例中,我希望将 MyEvent 类中的 Prodgroup 和 ErrandType 字段设置为相应的 Prodgroup 和 Errandtype 实例
我已经尝试过 @OneToOne 与 @joincolumns 和mappedby 属性的关系,但我无法让它工作,并且我已经失去了所有逻辑方法的感觉。我对 JPA 实体映射的掌握显然很薄弱。
有人可以澄清一下吗?
最佳答案
应该是:
@Entity
@Table(name="event")
public class MyEvent {
@Id
int id;
// what mapping should go here?
@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "prodgroup_id", insertable = true, updatable = true)
Prodgroup prodgroup;
// what mapping should go here?
@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "errandtype_id", insertable = true, updatable = true)
ErrandType errandtype;
}
@Entity
public class Prodgroup {
@Id
private String prodgroup;
}
@Entity
public class ErrandType {
@Id
private String errandtype;
}
FetchType Eager 表示该对象将始终被加载(如果未指定,则默认为“Lazy”)。
CascadeType.ALL 表示合并/保留/删除也将对链接表进行。
塞巴斯蒂安
关于java - JPA 和新手的关系映射问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13050534/