我在java中有一个具有数字ID和用户名(自然主键)的类。 我想在hibernate somthng中定义两个主键,就像使用SQL
一样Create table X(
Int ID PK,
String name PK,
String adress,
.....
)
我已经这样了:
@Entity
@Table(name="Xtable")
public class Xclass{
@Id
@GeneratedValue
@Column(name="ID_X", length=100)
private long ID_X;
@Column(name="Name_X", length=100)
private String Name_X;
}
答案 0 :(得分:0)
@Entity
class User {
@EmbeddedId
@AttributeOverride(name="firstName", column=@Column(name="fld_firstname")
UserId id;
Integer age;
}
@Embeddable
class UserId implements Serializable {
String firstName;
String lastName;
}
答案 1 :(得分:0)
两种常见方法涉及使用@IdClass或@EmbeddedId注释:
使用@IdClass注释。见http://www.objectdb.com/api/java/jpa/IdClass
@Entity
@Table(name =“X”)
@IdClass(XIdClass.class)
公共类XClass实现Serializable {
@Id
private Long id;
@Id
private String name;
private String address;
//...
}
// 1。必须实现java.io.serializable
// 2。必须覆盖equals()和hashCode()
公共类XIdClass实现Serializable {
private Long id;
private String name;
//accessors/mutators ...
//override equals() and hashCode() ...
}
使用@EmbeddedId注释。见http://www.objectdb.com/api/java/jpa/EmbeddedId
@Entity
@Table(name =“X”)
公共类XClass实现Serializable {
@EmbeddedId
private XEmbeddedId xPK;
private String address;
//...
}
@Embeddable 公共类XEmbeddedId实现Serializable {
private Long id;
private String name;
//...
}