Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/12/2012, 18:42
jblanco
 
Fecha de Ingreso: diciembre-2012
Mensajes: 7
Antigüedad: 11 años, 5 meses
Puntos: 0
Pregunta Problema con Hibernate ManyToMany con anotaciones.

Buenas noches.

Estoy desarrollando una aplicación donde tengo dos tablas con relación muchos a muchos y no he podido mapearla en NetBeans con hibernate. Las tablas son perfiles y menus, donde debe crearse la tabla perfilesmenus con el idperfil y idmenu de cada tabla.

Las clases que mapean esas tablas son las siguientes (pongo solo algunos campos para hacerla menos extensa):

Entity
@Table(name = "perfiles")
public class Perfil implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@NotNull
@Column(name = "idPerfil")
private Short idPerfil;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 15)
@Column(name = "nombrePerfil")
private String nombrePerfil;
@JoinColumn(name = "idTipoPerfil", referencedColumnName = "idTipoPerfil")
@ManyToOne(optional = false, fetch = FetchType.EAGER)
private TipoPerfil tipoPerfil;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "perfilesmenus",
joinColumns = {@JoinColumn(name = "idPerfil")}, inverseJoinColumns = {@JoinColumn(name = "idMenu")})
private List<Menu> menus = new ArrayList<Menu>();
.
.
.
Setters y Getters
}

En las líneas de color rojo intento establecer la relación muchos a muchos. Ahora, pongo la clase donde se mapea el menú.

@Entity
@Table(name = "menus")
public class Menu implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@NotNull
@Column(name = "idMenu")
private Short idMenu;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 25)
@Column(name = "nombreMenu")
private String nombreMenu;
@ManyToMany(cascade = CascadeType.ALL, mappedBy = "menus")
private List<Perfil> perfiles = new ArrayList<Perfil>();
.
.
.
setters y getters
}

En rojo, pongo la relación que la une con la clase Perfil. Cuando ejecuto el HQL de una consulta como FROM Menu, me aparece el siguiente mensaje:

org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: modelo.Menu.perfiles[modelo.Perfil]
at org.hibernate.cfg.annotations.CollectionBinder.bin dManyToManySecondPass(CollectionBinder.java:1068)
at org.hibernate.cfg.annotations.CollectionBinder.bin dStarToManySecondPass(CollectionBinder.java:600)

Igual me saca error cuando consulto la clase Perfil:

org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: modelo.Perfil.menus[modelo.Menu]
at org.hibernate.cfg.annotations.CollectionBinder.bin dManyToManySecondPass(CollectionBinder.java:1068)
at org.hibernate.cfg.annotations.CollectionBinder.bin dStarToManySecondPass(CollectionBinder.java:600)


¿Alguien sabe cómo puedo resolverlo? Les agradecería enormemente.


Muchas gracias.