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

标签 java jpa

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

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/

相关文章:

java - 如何通过 JPA 持久化从 JTable 检索的实体对象?

java - Apache POI : cloning worksheets containing charts

mysql - 带有连接表的 ManyToOne、oneToMany

java - 如何从我的搜索查询结果中排除转推选项

java - 使用 Java Swing 创建一个窗口

java - 映射属性具有相同类型的 jpa 关系

java - JPA/hibernate : code based validation of jpa queries

java - Spring Boot Autowiring 实体管理器特定于配置

javascript - 如何从 <select> 检索值并将其放入隐藏的 JSTL 中

java在子类中创建对象