当前位置: 首页 > 知识库问答 >
问题:

在JPA中将主键映射到复合键

谢奇略
2023-03-14

我有2个表,即user和user_session。

@Entity
@Table(name="user")
public class User {
    @Id
    @Email
    @Column(name = "user_id")
    private String userId;

    @Column(name = "password")
    private String password;

    @Column(name = "fname")
    private String fname;

    @OneToMany(fetch = FetchType.LAZY)
    @JoinColumn(name = "userId", referencedColumnName = "user_id")
    private UserSession userSession;
}

@Entity
@Table(name="user_session")
public class UserSession{
    @EmbeddedId
    private UserSessionPK userSessionPK;

    @Column(name = "remote_ip")
    private String remoteIp;
}

@Embeddable
public class UserSessionPK implements Serializable {
    private static final long serialVersionUID = 1L;

    @Column(name = "user_id")
    private String userId;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "time_in")
    private Date timeIn;
}

共有1个答案

百里飞捷
2023-03-14

移除mappedBy属性。当您具有双向关系时,使用此属性来指示关系的哪一方是所有者。

但是您需要设置外键,也就是JoinColumn

@JoinColumn("user_id")
@OneToMany(fetch = FetchType.LAZY)
private UserSession userSession;
 类似资料:
  • 我在jpa/Hibernate中映射复合键时遇到了问题。父实体和子实体都具有复合主键。 在运行时保存它时会出现以下异常: 我认为这是虚假的,因为有getter和setter。如果在priceRequestLegModel上使用mappedby=“leg”,在allocationModel上使用@mapsid,也会出现同样的错误。有人能指出我在这里做错了什么吗?

  • 我有两个表:A和B,都有一个复合主键。表B的PK也是表a主键的外键。 当我试图获取映射表B的类的实例时,我得到了以下异常: org.hibernate.TypeMismatchException 这两个类都位于package:com.cairone.ejemple01.entities 完整的日志输出为: 2016-09-21 12:28:24.505错误8568--[main] O.S.Boot

  • 在child_tableparent_id列作为外键和复合主键的一部分。 Embedded类内部无法使用标识生成器。所以我在这里使用ID类。为child_id列生成自动增量值。 我无法将parent_table生成parent_id值作为外键值存储在child_table中,它存储为0。 有人能检查一下地图吗?帮帮我…… 提前致谢...

  • 问题内容: 我在为某些实体设置jpa映射时遇到麻烦。我有一个如下定义的父实体。 然后,我有一个带有复合键的子实体,以及此表的主键的外键,如下所示: 我知道子实体不正确,但是我不确定如何将其设置为具有复合PK。我知道我需要设置一个PK类,但是当一个字段是父类的外键时,我不确定该怎么做。一旦设置好,父级将如何引用子级实体? 任何帮助表示赞赏。 问题答案: 这受JPA 2规范的 第2.4.1节“与派生身

  • 我的数据库是: 我们可以在Table2中为Table1中的1设置多行。 我的TABLE1实体是: 我的Table1Id类是: 我的TABLE2实体是: 我的Table2Id类是: 当我尝试启动我的tomcat时,我有以下错误: 我尝试使用引用列,主键连接列和许多其他东西,但是通过在互联网上阅读它,它可以解决数据库建模问题。我认为问题是主键和外键在2个表中具有相同的名称,但我可能是错的......我

  • 问题内容: 我试图弄清楚如何构建JPA实体bean,以使数据适用于我的设备。该数据库是旧的,一成不变的,所以我不能更改架构。设备模型具有复合主键,其中的一列是设备类型的FK。 我尝试了几种不同的方法。首先是设备具有DeviceModel和DeviceType,但是这给了我一个错误,那就是太多的东西在引用dev_type。因此,然后我尝试让DeviceModel引用DeviceType,但遇到了相同