Java 关于hibernate注释的问题
我有两个实体:用户和角色 我有一个类Userrole,它将在user和role之间包含一个复合键 现在Userrole将不包含userId和roleId。。但是对象用户和角色是这样的:Java 关于hibernate注释的问题,java,hibernate,annotations,Java,Hibernate,Annotations,我有两个实体:用户和角色 我有一个类Userrole,它将在user和role之间包含一个复合键 现在Userrole将不包含userId和roleId。。但是对象用户和角色是这样的: public class UserRole implements Serializable{ User user; Role role; 我可以把@Id放在用户身上吗?比如: @Id public User getUser() { return user;
public class UserRole implements Serializable{
User user;
Role role;
我可以把@Id放在用户身上吗?比如:
@Id
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
?否。
您只能在原语中使用@Id。但是您可以使用@ComposeId或@IdClass(类似于这样,现在无法访问hibernate文档…)并将用户映射为您的合成id使用注释,您需要为您的合成id定义一个适当的类,并将其注释为
@embeddeble
。(使用XML,也可以在没有显式id类的情况下映射复合id。)以下是复合id,以及。我的做法:
@Entity
public class User {
...
@OneToMany
public Set<UserRoles> getUserRoles() {
return this.userRoles;
}
}
@Entity
public class UserRole {
...
@Id
@GeneratedValue
public long getId() {
return this.id;
}
@ManyToOne
public Role getRole() {
return this.role;
}
@ManyToOne
public Role getCategory() {
return this.category;
}
}
@实体
公共类用户{
...
@独身癖
公共集合getUserRoles(){
返回this.userRoles;
}
}
@实体
公共类用户角色{
...
@身份证
@生成值
公共长getId(){
返回此.id;
}
@许多酮
公共角色getRole(){
返回这个角色;
}
@许多酮
公共角色getCategory(){
返回此.category;
}
}