
23/02/2012, 14:53
|
| | Fecha de Ingreso: febrero-2012
Mensajes: 3
Antigüedad: 13 años Puntos: 0 | |
Respuesta: Problema con JPA Gracias por tu respuesta, este es el código de mi clase Auto:
Código:
package probandorelacion;
import java.io.Serializable;
import javax.persistence.*;
import javax.xml.bind.annotation.XmlRootElement;
/**
*
* @author Ricardo
*/
@Entity
@Table(name = "auto")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Auto.findAll", query = "SELECT a FROM Auto a"),
@NamedQuery(name = "Auto.findById", query = "SELECT a FROM Auto a WHERE a.id = :id"),
@NamedQuery(name = "Auto.findByMarca", query = "SELECT a FROM Auto a WHERE a.marca = :marca"),
@NamedQuery(name = "Auto.findByModelo", query = "SELECT a FROM Auto a WHERE a.modelo = :modelo"),
@NamedQuery(name = "Auto.findByPatente", query = "SELECT a FROM Auto a WHERE a.patente = :patente")})
public class Auto implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
private Integer id;
@Basic(optional = false)
@Column(name = "marca")
private String marca;
@Basic(optional = false)
@Column(name = "modelo")
private String modelo;
@Basic(optional = false)
@Column(name = "patente")
private String patente;
@JoinColumn(name = "persona_fk", referencedColumnName = "id")
@ManyToOne
private Persona personaFk;
public Auto() {
}
public Auto(Integer id) {
this.id = id;
}
public Auto(String marca, String modelo, String patente) {
this.marca = marca;
this.modelo = modelo;
this.patente = patente;
}
public Auto(Integer id, String marca, String modelo, String patente) {
this.marca = marca;
this.modelo = modelo;
this.patente = patente;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getMarca() {
return marca;
}
public void setMarca(String marca) {
this.marca = marca;
}
public String getModelo() {
return modelo;
}
public void setModelo(String modelo) {
this.modelo = modelo;
}
public String getPatente() {
return patente;
}
public void setPatente(String patente) {
this.patente = patente;
}
public Persona getPersonaFk() {
return personaFk;
}
public void setPersonaFk(Persona personaFk) {
this.personaFk = personaFk;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Auto)) {
return false;
}
Auto other = (Auto) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "probandorelacion.Auto[ id=" + id + " ]";
}
}
Efectivamente, se encuentra la anotación @ManyToOne
EDITO: Por las dudas también dejo el código de la clase Persona
Código:
package probandorelacion;
import java.io.Serializable;
import java.util.Collection;
import javax.persistence.*;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import java.util.*;
/**
*
* @author Ricardo
*/
@Entity
@Table(name = "persona")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Persona.findAll", query = "SELECT p FROM Persona p"),
@NamedQuery(name = "Persona.findById", query = "SELECT p FROM Persona p WHERE p.id = :id"),
@NamedQuery(name = "Persona.findByNombre", query = "SELECT p FROM Persona p WHERE p.nombre = :nombre"),
@NamedQuery(name = "Persona.findByApellido", query = "SELECT p FROM Persona p WHERE p.apellido = :apellido"),
@NamedQuery(name = "Persona.findByDni", query = "SELECT p FROM Persona p WHERE p.dni = :dni")})
public class Persona implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
private Integer id;
@Basic(optional = false)
@Column(name = "nombre")
private String nombre;
@Basic(optional = false)
@Column(name = "apellido")
private String apellido;
@Basic(optional = false)
@Column(name = "dni")
private String dni;
@OneToMany(mappedBy = "personaFk", cascade=CascadeType.ALL)
private Collection<Auto> autoCollection;
public Persona() {
}
public Persona(Integer id) {
this.id = id;
}
public Persona(Integer id, String nombre, String apellido, String dni) {
this.nombre = nombre;
this.apellido = apellido;
this.dni = dni;
}
public Integer getId() {
return id;
}
public Persona(String nombre, String apellido, String dni) {
this.id = 2;
this.nombre = nombre;
this.apellido = apellido;
this.dni = dni;
}
public void setId(Integer id) {
this.id = id;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getApellido() {
return apellido;
}
public void setApellido(String apellido) {
this.apellido = apellido;
}
public String getDni() {
return dni;
}
public void setDni(String dni) {
this.dni = dni;
}
@XmlTransient
public Collection<Auto> getAutoCollection() {
return autoCollection;
}
public void setAutoCollection(Collection<Auto> autoCollection) {
this.autoCollection = autoCollection;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Persona)) {
return false;
}
Persona other = (Persona) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "probandorelacion.Persona[ id=" + id + " ]";
}
public void comprarAuto(String marca,String modelo, String patente){
Auto unAuto = new Auto(marca,modelo,patente);
autoCollection = new LinkedList<Auto>();
autoCollection.add(unAuto);
}
}
Última edición por Selva123; 23/02/2012 a las 15:07 |