java - Hibernate JPA ManyToOne 组合键

标签 java hibernate jpa

我正在尝试设置我的实体以允许进行 pk。我的数据库包含两个字段,

dealer_detail_id pk user_detail_id pk

两者都在相应表中加入 id。

到目前为止,我已经试过了,但没有成功。

@Embeddable
public class DealerUserPk implements Serializable {

    private Integer dealerDetail;
    private Integer userDetail;

经销商用户

@Embeddable
@Table(name = "dealer_user", schema = "account") 
public class DealerUser implements Serializable {

    @EmbeddedId
    private DealerUserPk id;

    @Id
    @ManyToOne
    @JoinColumn(name = "dealer_detail_id", referencedColumnName = "id")
    private DealerDetail dealerDetail;

    @Id
    @ManyToOne
    @JoinColumn(name = "user_detail_id", referencedColumnName = "id")
    private UserDetail userDetail;

经销商详情

@Entity
@Table(name = "dealer_detail", schema = "account") 
public class DealerDetail implements Serializable {

    @Id
    private Integer id;

用户详细信息

@Entity
@Table(name = "user_detail", schema = "account") 
public class UserDetail implements Serializable {

    @Id
    private Integer id;

任何人都可以发现我做错了什么吗?

最佳答案

这是正确的:

@Embeddable
public class DealerUserPk implements Serializable {

    private Integer dealerDetail;
    private Integer userDetail;
  1. 但您的 DealerUser 带有可嵌入注释,它应该是 @Entity 因为您正在使用 @Table 注释。
  2. 需要添加MapsId如下

     @Entity
     @Table(name = "dealer_user", schema = "account") 
      public class DealerUser implements Serializable {
    
    @EmbeddedId
    private DealerUserPk id;
    
    @MapsId("dealerDetail")
    @ManyToOne
    @JoinColumn(name = "dealer_detail_id", referencedColumnName = "id")
    private DealerDetail dealerDetail;
    
    @Id
    @MapsId("userDetail")
    @JoinColumn(name = "user_detail_id", referencedColumnName = "id")
    private UserDetail userDetail;
    

尝试一下。

关于java - Hibernate JPA ManyToOne 组合键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22002739/

相关文章:

java - 单击按钮时如何显示新的 Jframe

java - 如何在Okhttp中通过传递对象来发出POST请求?

java - JSON PATH 字段 NULL 检查表达式

hibernate - 当lazy=true 时,如何让equals() 与Hibernate 实体一起工作?

java - Hibernate 用一个 session.save 保存许多不同的对象

jpa - 在 JPA 中热切地获取所有集合

java - 统计 ArrayList 中一定范围内的数字

java - 如何使用 Hibernate 条件实现这个多选和 where 查询?

java - 将 hyperjaxb3 升级到 jpa 2.1

java - JPA/Hibernate 实例不工作