Спящие аннотации @ManyToMany - PullRequest
       0

Спящие аннотации @ManyToMany

0 голосов
/ 01 сентября 2010

Я создал таблицы в MySQL: роль tabel, object_label и role_object_label (таблица ссылок)

Я определил @ManyToMany и получаю исключение.в чем проблема в моем коде?

@Entity
@Table(name = "object_label")
public class ObjectLabel  implements Serializable {

    private static final long serialVersionUID = 3475812350796110403L;
    private String name;

    public Long getId() { return id; }

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO)
@Column(precision = 10, unique = true, nullable = false, updatable = false)
public Long getId() {
    return id;
}

@Override
public void setId( Long id ) {
    this.id = id;
}

    /**
     * @return the name
     */
    public String getName() {
        return name;
    }
    /**
     * @param name the name to set
     */
    public void setName(String name) {
        this.name = name;
    }


}


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

public Long getId () {return id;}

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO)
@Column(precision = 10, unique = true, nullable = false, updatable = false)
public Long getId() {
    return id;
}

@Override
public void setId( Long id ) {
    this.id = id;
}

   @ManyToMany( fetch = FetchType.EAGER )
    @JoinTable(
        name = "role_object_label", joinColumns = @JoinColumn(name = "role_id"), 
        inverseJoinColumns = @JoinColumn(name = "object_label_id"))
    public Set<ObjectLabel> getObjectLabels(){
        return this.objectLabels;
    }

    /**
     * @param objectLabels the objectLabels to set
     */
    public void setObjectLabels(Set<ObjectLabel> objectLabels) {
        this.objectLabels = objectLabels;
    }

    private Set<ObjectLabel> objectLabels = new HashSet<ObjectLabel>();
}

в hibernate.cfg.xml определено:

<mapping class="com.myCompany.model.RoleObjectLabel" />
<mapping class="com.myCompany.model.ObjectLabel" />

Получено исключение:

Caused by: org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: com.sintecmedia.model.Role.objectLabels[com.myCompany.model.ObjectLabel]

Спасибо!Rivki

1 Ответ

1 голос
/ 01 сентября 2010

Ошибка объясняет, что ObjectLabel не является классом сущности.

Вы аннотировали свой класс @Entity, но забыли добавить аннотацию @Id.И @Entity, и @Id обязательны для объявления правильного класса сущности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...