2012-06-04 63 views
1

我正在做一对多的映射的概念证明没有成功。我的架构如下:用户-----> UseRole休眠多对一映射

import static javax.persistence.GenerationType.IDENTITY; 

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.Id; 
import javax.persistence.Table; 

@Entity 
@Table(name="UserRole") 
public class UserRole { 

    private int userRoleId; 
    private String userRoleName; 

    @Id 
    @GeneratedValue(strategy = IDENTITY) 
    @Column(name = "UserRoleId", unique = true, nullable = false) 
    public int getUserRoleId() { 
     return userRoleId; 
    } 

    public void setUserRoleId(int userRoleId) { 
     this.userRoleId = userRoleId; 
    } 

    @Column(name = "UserRoleName", unique = true, nullable = false) 
    public String getUserRoleName() { 
     return userRoleName; 
    } 

    public void setUserRoleName(String userRoleName) { 
     this.userRoleName = userRoleName; 
    } 

} 

,这里的User类

@Entity 
    @Table(name="Users") 
    public class User { 
    private int userId; 
    private String firstName; 
    private String lastName; 
    private String userName; 
    private String password; 
    private String phone; 
    private String email; 
    private UserRole userRole; 
    private List<Meeting> meetings; 
    private List<MeetingInvitation> meetingInvitationsSend; 
    private List<MeetingInvitation> meetingInvitationsReceived; 

    @Id 
    @GeneratedValue(strategy = IDENTITY) 
    @Column(name = "UserId", unique = true, nullable = false) 
    public int getUserId() { 
     return userId; 
    } 
     .... 

    @ManyToOne(targetEntity=UserRole.class) 
    @JoinColumn (name="userRole") 
    public UserRole getUserRole() { 
     return userRole; 
    } 

    public void setUserRole(UserRole userRole) { 
     this.userRole = userRole; 
    } 

} 

,我得到这个错误 初始SessionFactory的创建failed.org的一部分。 hibernate.AnnotationException:上User.userRole @OneToOne或@ManyToOne引用了未知的实体:UserRole的

屁股,你可以看到我加了注解@Entity在用户角色类

回答

5

你可能只是忘了申报在Hibernate的配置文件中的类:

<mapping class="com.foo.bar.UserRole"/> 

另外,还要注意的是targetEntity=UserRole.class不必要的,因为你的getter返回UserRole。 Hibernate会从getter的返回类型中推导出目标实体。

+0

的确我只是通过我无法提交答案才发现它自己,但很多很多谢谢 –