关于hibernate注解的问题

Posted

技术标签:

【中文标题】关于hibernate注解的问题【英文标题】:question about hibernate annotations 【发布时间】:2011-01-04 12:39:30 【问题描述】:

我有 2 个实体:用户和角色 我有一个类 Userrole,它将包含用户和角色之间的复合键。

现在 Userrole 将不包含 userId 和 roleId.. 但对象 User 和 Role 看起来像这样:

public class UserRole implements Serializable
    User user;
    Role role;

我可以将@Id 放在用户上吗?喜欢:

    @Id
    public User getUser() 
        return user;
    
    public void setUser(User user) 
        this.user = user;
    

?

【问题讨论】:

【参考方案1】:

使用注解,你需要为你的复合id定义一个合适的类,并注解为@Embeddable。 (使用 XML,也可以在没有显式 id 类的情况下映射复合 id。)这里是 an example using an inner class 作为复合 id,another one, with a top-level id class。

【讨论】:

【参考方案2】:

没有。 您只能在原语中使用 @Id。但是您可以使用@ComposeId 或@IdClass(类似的东西,现在无法访问休眠文档...)并将用户映射为您的组合ID

【讨论】:

【参考方案3】:

我会做的方式:

    @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;
        

    

【讨论】:

以上是关于关于hibernate注解的问题的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate 关于实体映射常用注解

关于hibernate注解的简单应用

hibernate关于一对一注解配置

hibernate关于多对多注解配置

关于hibernate注解方式的实体类映射

关于hibernate的AnnotationConfiguration的问题