gpt4 book ai didi

java - JPA 和新手的关系映射问题

转载 作者:行者123 更新时间:2023-12-01 18:58:47 24 4
gpt4 key购买 nike

我正在尝试让以下类型的映射发挥作用

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com