简体   繁体   中英

Annotation exception Hibernate

Hello i have my entity class Enterprise and Role, with this code:

@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

And my Role class:

@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() {
    }

When i save an object y have not problem but when i try to execute this query: from Enterprise order by user_name desc

Obtain this error:

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)

And i have defined this Entities in the hibernate.xml config file, pointing to the class with the entire path, example com.example.Enterprise or com.example.Role.

Can any body why is this? Thanks in advance

My hibernate.cfg is:

<?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>

And the Configuration File i generate with Netbeans at HibernateUtil.

Enterprise实体的@ManyToMany批注中删除targetEntity = Role.class部分。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM