在我的 Spring boot - JPA 应用程序中,我正在尝试实现复合键:
@Entity
public class User
{
@Id
private String timeStamp;
@Id
private String firstName;
@Id
private String lastName;
}
这给了我错误,说:
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.MappingException: Composite-id class must implement Serializable: com.mua.testkeys.model.User
即使我实现了Serialized
,它也会给我错误。
我该如何解决这个问题?
使用:Spring + JPA + H2
最佳答案
可以使用 @IdClass
创建复合 key ,如下所示。
用户.class
@IdClass(UserPK.class)
@Table(name = "user")
@Entity
public class User {
@Id
private String timeStamp;
@Id
private String firstName;
@Id
private String lastName;
//remaining fields
// getters and setters
}
UserPK.class
public class UserPK {
private String timeStamp;
private String firstName;
private String lastName;
// constructors
// getters and setters
//implement euquels() and hashcode()
}
- 为主键定义一个类,并将所有键作为字段。
- 实现
equals()
和hashcode()
方法。 - 使用
@IdClass(UserPK.class) 注释 User 类
- 使用
@Id
注释声明 Id 字段
关于java - org.hibernate.MappingException - 复合 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59209739/