Hola,
Tengo un archivo de mapeo (A) donde la clase generator es "increment" y luego otro (B) con el cual hago una relación, pero aquí no se que poner, si identity, foreign , assigned o qué?
¿qué se usa para una relación?
Saludos
| |||
La clase 'generator' en un mapeo con Hibernate Hola, Tengo un archivo de mapeo (A) donde la clase generator es "increment" y luego otro (B) con el cual hago una relación, pero aquí no se que poner, si identity, foreign , assigned o qué? ¿qué se usa para una relación? Saludos |
| |||
Respuesta: La clase 'generator' en un mapeo con Hibernate Puedes utlizar anotaciones(ejb) lo cual te facilitaria para hacer el mapeo y las relaciones o en todo caso sino usas anoatciones peudes:
Código PHP:
Ver original Saludos |
| |||
Respuesta: La clase 'generator' en un mapeo con Hibernate Gracias por la respuesta, lo tengo así como indicas pero el "list" que en mi caso es un "set" lo tengo declarado en la clase A que tiene como generator "increment" ¿en la clase B lo pongo como "assigned" o "identity"? |
| |||
Respuesta: La clase 'generator' en un mapeo con Hibernate El elemento "<generator>" es el que nos permite indicar la estrategia de generación del identificador usando su atributo "class". Existen varias estrategias que están explicadas en esta pagina http://www.roseindia.net/hibernate/h...relement.shtml Saludos |
| |||
Respuesta: La clase 'generator' en un mapeo con Hibernate Gracias por la respuesta. La descripción de las estrategias en castellano las muestra Netbeans al pasar el ratón por encima del nombre de la clase, pero mi duda es que estrategia utilizar para la relación. Para la clase A utilizo "increment", pero en la clase "B" no se cual utilizar. Es en una relación one-to-many. Saludos |
| |||
Respuesta: La clase 'generator' en un mapeo con Hibernate Este es el mapeo de la tabla "A": Cita: Este es el mapeo de la tabla Relaciones , la "B":<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Generated 06-jul-2011 19:06:31 by Hibernate Tools 3.2.1.GA --> <hibernate-mapping> <class name="es.jsys.cdr.oracle.DetalleLlamadas" table="DETALLE_LLAMADAS" schema="myschema"> <id name="incidenciaid" type="integer"> <column name="INCIDENCIAID" precision="0" /> <generator class="increment" /> </id> <set name="relaciones" table="RELACIONES"> <key column="ID" /> <one-to-many class="es.jsys.cdr.oracle.Relaciones"/> </set> Cita: Saludos <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Generated 06-jul-2011 19:06:31 by Hibernate Tools 3.2.1.GA --> <hibernate-mapping> <class name="es.jsys.cdr.oracle.Relaciones" table="RELACIONES" schema="myschema"> <id name="id" type="integer"> <column name="ID" precision="0" /> <generator class="identity" /> </id> <property name="relacionada" type="integer" > <column name="RELACIONADA" precision="0" /> </property> </class> </hibernate-mapping> |
| |||
Respuesta: La clase 'generator' en un mapeo con Hibernate Mira esto con anotaciones, otra posibilidad, supongamos La clase libro:
Código PHP:
Ver original y la clase persona
Código PHP:
Ver original Con esas anotaciones te ahorras todo el papeleo del mapeo xD Esto es para uno a muchos unidireccional Saludos |
| |||
Respuesta: La clase 'generator' en un mapeo con Hibernate Gracias por la respuesta, Voy a hacerlo con anotaciones a ver.. Una cosa, voy a borrar los mappings files y los POJOS para volver a crearlos con la opción de ingeniería inversa y seleccionando la casilla de EJB para que me cree las anotaciones, lo que ocurre que ya tenía consultas criteria hechas, sin estas nuevas anotaciones, ¿por lo qué también selecciono la casilla de Mapas XML de Hibernate? Para que me cree lo mismo que tenía antes más las anotaciones, ¿es así no? Saludos Última edición por javihd; 15/07/2011 a las 14:22 |
| |||
Respuesta: La clase 'generator' en un mapeo con Hibernate Bueno ahora me ha quedado así: Cita: Ese sería el objeto "A", ahora tengo otro objeto el "B" donde tengo 2 campos ID y RELACIONADAS, lo que necesito ahora es meter los ID de las incidencias que el usuario relacione en el campo RELACIONADAS.// Generated 15-jul-2011 21:19:19 by Hibernate Tools 3.2.1.GA import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; /** * DetalleLlamadas generated by hbm2java */ @Entity @Table(name="DETALLE_LLAMADAS" ,schema="SCHEMA" ) public class DetalleLlamadas implements java.io.Serializable { private Integer incidenciaid; private String origen; private String destino; private String contextoDestino; private String clid; private String canal; private String lastapp; private Date inicio; private Date fin; private String disposicion; private String amaflags; private String canalDestino; private String comentarios; private String calle; private String numCalle; private String titulo; private String estado; private Date incidenciaInicio; private Date incidenciaFin; private String grabacion; private String agenteFinaliza; public DetalleLlamadas() { } public DetalleLlamadas(Integer incidenciaid) { this.incidenciaid = incidenciaid; } public DetalleLlamadas(Integer incidenciaid, String origen, String destino, String contextoDestino, String clid, String canal, String lastapp, Date inicio, Date fin, String disposicion, String amaflags, String canalDestino, String comentarios, String calle, String numCalle, String titulo, String estado, Date incidenciaInicio, Date incidenciaFin, String grabacion, String agenteFinaliza) { this.incidenciaid = incidenciaid; this.origen = origen; this.destino = destino; this.contextoDestino = contextoDestino; this.clid = clid; this.canal = canal; this.lastapp = lastapp; this.inicio = inicio; this.fin = fin; this.disposicion = disposicion; this.amaflags = amaflags; this.canalDestino = canalDestino; this.comentarios = comentarios; this.calle = calle; this.numCalle = numCalle; this.titulo = titulo; this.estado = estado; this.incidenciaInicio = incidenciaInicio; this.incidenciaFin = incidenciaFin; this.grabacion = grabacion; this.agenteFinaliza = agenteFinaliza; } @Id @Column(name="INCIDENCIAID", unique=true, nullable=false, precision=0) public Integer getIncidenciaid() { return this.incidenciaid; } public void setIncidenciaid(Integer incidenciaid) { this.incidenciaid = incidenciaid; } @Column(name="ORIGEN", length=10) public String getOrigen() { return this.origen; } public void setOrigen(String origen) { this.origen = origen; } @Column(name="DESTINO", length=20) public String getDestino() { return this.destino; } public void setDestino(String destino) { this.destino = destino; } @Column(name="CONTEXTO_DESTINO", length=20) public String getContextoDestino() { return this.contextoDestino; } public void setContextoDestino(String contextoDestino) { this.contextoDestino = contextoDestino; } @Column(name="CLID", length=80) public String getClid() { return this.clid; } public void setClid(String clid) { this.clid = clid; } @Column(name="CANAL", length=80) public String getCanal() { return this.canal; } public void setCanal(String canal) { this.canal = canal; } @Column(name="LASTAPP", length=80) public String getLastapp() { return this.lastapp; } public void setLastapp(String lastapp) { this.lastapp = lastapp; } @Temporal(TemporalType.TIMESTAMP) @Column(name="INICIO", length=11) public Date getInicio() { return this.inicio; } public void setInicio(Date inicio) { this.inicio = inicio; } @Temporal(TemporalType.TIMESTAMP) @Column(name="FIN", length=11) public Date getFin() { return this.fin; } public void setFin(Date fin) { this.fin = fin; } @Column(name="DISPOSICION", length=32) public String getDisposicion() { return this.disposicion; } public void setDisposicion(String disposicion) { this.disposicion = disposicion; } @Column(name="AMAFLAGS", length=32) public String getAmaflags() { return this.amaflags; } public void setAmaflags(String amaflags) { this.amaflags = amaflags; } @Column(name="CANAL_DESTINO", length=32) public String getCanalDestino() { return this.canalDestino; } public void setCanalDestino(String canalDestino) { this.canalDestino = canalDestino; } @Column(name="COMENTARIOS", length=4000) public String getComentarios() { return this.comentarios; } public void setComentarios(String comentarios) { this.comentarios = comentarios; } @Column(name="CALLE", length=60) public String getCalle() { return this.calle; } public void setCalle(String calle) { this.calle = calle; } @Column(name="NUM_CALLE", length=10) public String getNumCalle() { return this.numCalle; } public void setNumCalle(String numCalle) { this.numCalle = numCalle; } @Column(name="TITULO", length=150) public String getTitulo() { return this.titulo; } public void setTitulo(String titulo) { this.titulo = titulo; } @Column(name="ESTADO", length=13) public String getEstado() { return this.estado; } public void setEstado(String estado) { this.estado = estado; } @Temporal(TemporalType.TIMESTAMP) @Column(name="INCIDENCIA_INICIO", length=11) public Date getIncidenciaInicio() { return this.incidenciaInicio; } public void setIncidenciaInicio(Date incidenciaInicio) { this.incidenciaInicio = incidenciaInicio; } @Temporal(TemporalType.TIMESTAMP) @Column(name="INCIDENCIA_FIN", length=11) public Date getIncidenciaFin() { return this.incidenciaFin; } public void setIncidenciaFin(Date incidenciaFin) { this.incidenciaFin = incidenciaFin; } @Column(name="GRABACION", length=20) public String getGrabacion() { return this.grabacion; } public void setGrabacion(String grabacion) { this.grabacion = grabacion; } @Column(name="AGENTE_FINALIZA", length=15) public String getAgenteFinaliza() { return this.agenteFinaliza; } public void setAgenteFinaliza(String agenteFinaliza) { this.agenteFinaliza = agenteFinaliza; } } Cita: // Generated 15-jul-2011 21:19:19 by Hibernate Tools 3.2.1.GA import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; /** * Relaciones generated by hbm2java */ @Entity @Table(name="RELACIONES" ,schema="SCHEMA" ) public class Relaciones implements java.io.Serializable { private Integer id; private Integer relacionada; public Relaciones() { } public Relaciones(Integer id) { this.id = id; } public Relaciones(Integer id, Integer relacionada) { this.id = id; this.relacionada = relacionada; } @Id @Column(name="ID", unique=true, nullable=false, precision=0) public Integer getId() { return this.id; } public void setId(Integer id) { this.id = id; } @Column(name="RELACIONADA", precision=0) public Integer getRelacionada() { return this.relacionada; } public void setRelacionada(Integer relacionada) { this.relacionada = relacionada; } } |
| |||
Respuesta: La clase 'generator' en un mapeo con Hibernate Perdona por mi ignorancia, ¿pero ahora dónde añado el one-to-many, en el hbm.xml como antes, o en estos archivos .java (las anotaciones-POJOS o como se llamen porque ya me confunden) o es indiferente en un sitio que en el otro? |
| |||
Respuesta: La clase 'generator' en un mapeo con Hibernate No, si usas anotaciones, ya no escribes esto one-to-many, en el hbm.xml sino pasaria: public class Relaciones implements Serializable { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private long id; @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER) private List<DetalleLlamadas> relacionada= new ArrayList<DetalleLlamadas >(); y siemrpe la anotacion al tienes que poens antes de declarar, de la forma que te indico arriba PD: es decir, los .hbm.xml ya no lo tienes que hacer, el mapeo ya lo hacen las anotacioens de ejb solo tendras que tener el cfg.xml para realizar la conexion a la bbdd Saludos Última edición por sirdaiz; 18/07/2011 a las 02:14 |
| |||
Respuesta: La clase 'generator' en un mapeo con Hibernate De nada, yo tampoco estoy muy puesto en esto de hibernate, si te dijera q yo tb estoy aprendiendo xD Saludos Última edición por sirdaiz; 18/07/2011 a las 05:13 |
Etiquetas: |