0 votos

org.hibernate.AnnotationException

Hago uso de JPA para desde la clase Libro y Socio crear la tabla PRESTAMOS que une la información de ambas.

En la clase Libro todo es correcto, hago la unión de las tablas con prestamos y no hay problema, pero en la clase socio no me mapea la identidad, estando exactamente igual que en la clase Libro que no da error. ¿Que ocurre?

La clase Libro es la siguiente:

@Entity / Para comvertir de clase POJO a entidad / @Table(name="LIBROS", catalog="biblio") / Indicar la tabla con la que esta relacionada la entidad. Catalog indica la base de datos, la cual como ya esta dicha, no es obligatorio /

public class Libro implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@Column(name="ISBN", unique=true, nullable=false) /* Indica que isbn sera un campo primario, unico y no nulo de la tabla LIBROS*/
private String isbn;
@Column(name="AUTOR")
private String autor;
@Column(name="TITULO")
private String titulo;
@Column(name="PRESTADO")
private byte prestado;

@OneToMany(mappedBy="libro")
private List<Prestamos> prestamos;

public Libro() {
}

public Libro(String isbn, String autor, String titulo, byte b) {
    this.isbn = isbn;
    this.autor = autor;
    this.titulo = titulo;
    this.prestado = b;
}

public String getIsbn() {
    return isbn;
}
public void setIsbn(String isbn) {
    this.isbn = isbn;
}
public String getAutor() {
    return autor;
}
public void setAutor(String autor) {
    this.autor = autor;
}
public String getTitulo() {
    return titulo;
}
public void setTitulo(String titulo) {
    this.titulo = titulo;
}

public byte getPrestado() {
    return prestado;
}

public void setPrestado(byte prestado) {
    this.prestado = prestado;
}

public List<Prestamos> getPrestamos() {
    return prestamos;
}

public void setPrestamos(List<Prestamos> prestamos) {
    this.prestamos = prestamos;
}

}

La clase Socio es la siguiente:

package entidades;

import java.io.Serializable; import java.util.List;

import javax.persistence.*;;

@Entity @Table(name="SOCIOS", catalog="biblio")

public class Socio implements Serializable{

private static final long serialVersionUID = 1L;

@Id
@Column(name="ID_SOCIO", unique=true, nullable=false)
private int idSocio;
@Column(name="APELLIDOS")
private String apellidos;
@Column(name="NOMBRE")
private String nombre;

@OneToMany(mappedBy="socio")
private List<Libro> librosPrestados;

public Socio() {
}

public Socio(int idSocio, String apellidos, String nombre, List<Libro> librosPrestados) {
    this.idSocio = idSocio;
    this.apellidos = apellidos;
    this.nombre = nombre;
    this.librosPrestados = librosPrestados;
}

public int getIdSocio() {
    return idSocio;
}

public void setIdSocio(int idSocio) {
    this.idSocio = idSocio;
}

public String getApellidos() {
    return apellidos;
}

public void setApellidos(String apellidos) {
    this.apellidos = apellidos;
}

public String getNombre() {
    return nombre;
}

public void setNombre(String nombre) {
    this.nombre = nombre;
}

public List<Libro> getLibrosPrestados() {
    return librosPrestados;
}

public void setLibrosPrestados(List<Libro> librosPrestados) {
    this.librosPrestados = librosPrestados;
}

}

Y la clase Prestamo donde uno las dos tablas es la siguiente:

package entidades;

import javax.persistence.EmbeddedId; import javax.persistence.Entity; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table;

@Entity @Table(name="PRESTAMOS") //@NamedQuery(name="Prestamos.findAll", query="SELECT p FROM prestamos p") public class Prestamos {

@EmbeddedId
private PrestamoPK id;

// Bi directional many-to-one association to libro
@ManyToOne
@JoinColumn(name="ISBN", insertable=false, updatable=false)
private Libro libro;

//Bi direccional many-to-one association to socio
@ManyToOne
@JoinColumn(name="ID_SOCIO", insertable=false, updatable=false)
private Socio socio;

public Prestamos(){
}

public PrestamoPK getId() {
    return id;
}

public void setId(PrestamoPK id) {
    this.id = id;
}

public Socio getSocio() {
    return socio;
}

public void setSocio(Socio socio) {
    this.socio = socio;
}

public Libro getLibro() {
    return libro;
}

public void setLibro(Libro libro) {
    this.libro = libro;
}

}

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: