2013-09-30 4 views
1

Здравствуйте у меня есть свой класс энтерпрайз и роли, с этим кодом:Аннотация исключение Hibernate

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

Когда я сохранить объект у не проблема, но когда я пытаюсь выполнить запрос: от заказа предприятия по user_name алфавиту

Получить эту ошибку:

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' и вашу конфигурацию' Конфигурация'. –

+0

Я редактирую сообщение и помещаю hibernate.cfg, HibernateUtil по умолчанию – user1977204

+0

Я считаю, что вы можете удалить свойство targetEntity и попробовать это. – Zeus

ответ

0

Удалить targetEntity = Role.class часть от @ManyToMany аннотация Enterprise объект.

+0

Это не решит проблему – user1977204

+0

У вас есть другое предложение? – user1977204

Смежные вопросы