2013-09-30 427 views
1

你好,我有我的實體類企業和作用,與此代碼:註釋例外休眠

@Entity 
@Table(name = "enterprises") 
public class Enterprise implements Serializable{ 

@Id 
@Column(name = "user_name") 
private String userName; 
private String name; 
@Column (name = "tax_id") 
private String taxId; 
private String email; 
@Column (name = "contact_name") 
private String contactName; 
@Column (name = "contact_surname") 
private String contactSurname; 
private String phone; 
@Column (name = "enabled_account") 
private Boolean enabledAccount; 
@ManyToMany(targetEntity = Role.class, fetch = FetchType.LAZY, cascade = CascadeType.ALL) 
@JoinTable(name = "enterprise_role", joinColumns = { 
     @JoinColumn(name = "id_enterprise", nullable = false, updatable = false) }, 
     inverseJoinColumns = { @JoinColumn(name = "id_role", 
       nullable = false, updatable = false) }) 
private List<Role> roles; 
@Column (name = "enterprise_description") 
private String enterpriseDescription; 
private String password; 

public Enterprise() { 
    roles = new ArrayList<Role>(); 
} 
//the getters and setters 

而我的角色類:

@Entity 
@Table (name = "roles") 
public class Role implements Serializable { 

    @Id 
    @Column (name = "id_role") 
    private Integer id; 

    @Column (name = "role_type") 
    private String roleType; 
    private String description; 

    public Role() { 
    } 

當我保存對象y的不是問題,但是當我嘗試執行此查詢: 企業由用戶名order desc

獲取此錯誤:

org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an  unmapped class: com.efix.model.Enterprise.roles[com.efix.model.Role] 
at   org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1068) 
at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:600) 
at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:541) 
at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:43) 
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1130) 
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:324) 
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1286) 
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859) 

而且我已經在hibernate.xml配置文件中定義了這個實體,指向具有整個路徑的類,例如com.example.Enterprise或com.example.Role。

任何身體爲什麼會這樣?在此先感謝

我hibernate.cfg是:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
    <session-factory> 
    <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property> 
    <property name="hibernate.connection.driver_class">org.postgresql.Driver</property> 
    <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/prueba_efix</property> 
    <property name="hibernate.connection.username">postgres</property> 
    <property name="hibernate.connection.password">postgres</property> 
    <mapping class="com.efix.model.Enterprise"/> 
    <mapping class="com.efix.model.Role"/> 
    </session-factory> 
</hibernate-configuration> 

和配置文件我與Netbeans中的HibernateUtil產生。

+0

請向我們展示您的'hibernate.xml'文件和'Configuration'設置。 –

+0

我編輯帖子並把hibernate.cfg,HibernateUtil是默認 – user1977204

+0

我相信你可以刪除'targetEntity'屬性並嘗試這個。 – Zeus

回答

0

@ManyToMany刪除targetEntity = Role.class部分註釋Enterprise實體。

+0

這不能解決問題 – user1977204

+0

您是否有其他建議? – user1977204