views:

75

answers:

1

Hi,

I created tables in MySQL: role tabel , object_label and role_object_label (links table)

I defined @ManyToMany and I gets exception. what the problem in my code?

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

in hibernate.cfg.xml defined:

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

I gets exception:

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

Thanks! Rivki

+1  A: 

The error explains that ObjectLabel isn't an entity class.

You annotated your class with @Entity, but you forgot to put an @Id annotation. Both @Entity and @Id are mandatory to declare a proper entity class.

Vivien Barousse
I edited the question, I defined Id in the ObjectLabel class but I don't wrote them in the a questionthe property name in ObjectLabel without annotation because it's the same name in DB.what's the problem now?
Rivki
Nobody has an answer??
Rivki