Foros del Web » Programación para mayores de 30 ;) » Java »

EJB3 no logro entender las relaciones entre tablas

Estas en el tema de EJB3 no logro entender las relaciones entre tablas en el foro de Java en Foros del Web. Amigos, tengo 1 semana intentando comprender las Anotaciones EJB3 de las Entity Class para tener relacionadas las tablas de mi BD. Este EJB parece muy ...
  #1 (permalink)  
Antiguo 31/01/2009, 08:48
Avatar de dackiller  
Fecha de Ingreso: septiembre-2003
Ubicación: The Matrix
Mensajes: 341
Antigüedad: 20 años, 7 meses
Puntos: 4
EJB3 no logro entender las relaciones entre tablas

Amigos, tengo 1 semana intentando comprender las Anotaciones EJB3 de las Entity Class para tener relacionadas las tablas de mi BD.

Este EJB parece muy fabuloso pero me parece muy dificil el como usarlo...

Estoy usando
- NetBeans 6.1
- TopLink Essential
- Mysql 5.x (Motor de almacenamiento MyIsam)

Ejemplo:

Primera Tabla:
Código PHP:
CREATE TABLE `table1` (
  `
IDint(11NOT NULL auto_increment,
  `
NOMBREvarchar(20) default NULL,
  
PRIMARY KEY  (`ID`),
)

// SEGUNDA TABLA

CREATE TABLE `table2` (
  `
IDint(11NOT NULL auto_increment,
  `
NOMBREint(11) default NULL,
  `
APELLIDOvarchar(255) default NULL,
  
PRIMARY KEY  (`ID`),

Hasta ahora en algunos codigos de ejemplo, se que se puede extraer desde la Entidad table1, todos los registros de la Entidad table2 con Anotaciones @OneToMany .... @ManyToOne

Código PHP:
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.Serializable;
import java.util.Collection;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;

/**
 *
 * @author Administrador
 */
@Entity
@Table(name "table1")
@
NamedQueries({@NamedQuery(name "Table1.findById"query "SELECT t FROM Table1 t WHERE t.id = :id"), @NamedQuery(name "Table1.findByNombre"query "SELECT t FROM Table1 t WHERE t.nombre = :nombre")})
public class 
Table1 implements Serializable {
    @
Transient
    
private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
    private static final 
long serialVersionUID 1L;
    @
Id
    
@Column(name "ID"nullable false)
    private 
Integer id;
    @
Column(name "NOMBRE")
    private 
String nombre;
    @
OneToMany(mappedBy="NOMBRE")
    private 
Collection<Table2table2;

    public 
Table1() {
    }

    public 
Table1(Integer id) {
        
this.id id;
    }

    public 
Integer getId() {
        return 
id;
    }

    public 
void setId(Integer id) {
        
Integer oldId this.id;
        
this.id id;
        
changeSupport.firePropertyChange("id"oldIdid);
    }

    public 
String getNombre() {
        return 
nombre;
    }

    public 
void setNombre(String nombre) {
        
String oldNombre this.nombre;
        
this.nombre nombre;
        
changeSupport.firePropertyChange("nombre"oldNombrenombre);
    }

    public 
Collection<Table2getTable2() {
        return 
table2;
    }

    public 
void setTable2(Collection<Table2table2) {
        
this.table2 table2;
    }

    @
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 Table1)) {
            return 
false;
        }
        
Table1 other = (Table1object;
        if ((
this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return 
false;
        }
        return 
true;
    }

    @
Override
    
public String toString() {
        return 
"com.dkcontrol.presupuesto.Table1[id=" id "]";
    }

    public 
void addPropertyChangeListener(PropertyChangeListener listener) {
        
changeSupport.addPropertyChangeListener(listener);
    }

    public 
void removePropertyChangeListener(PropertyChangeListener listener) {
        
changeSupport.addPropertyChangeListener(listener);
    }


Código PHP:
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

/**
 *
 * @author Administrador
 */
@Entity
@Table(name "table2")
@
NamedQueries({@NamedQuery(name "Table2.findById"query "SELECT t FROM Table2 t WHERE t.id = :id"), @NamedQuery(name "Table2.findByNombre"query "SELECT t FROM Table2 t WHERE t.nombre = :nombre"), @NamedQuery(name "Table2.findByApellido"query "SELECT t FROM Table2 t WHERE t.apellido = :apellido")})
public class 
Table2 implements Serializable {
    private static final 
long serialVersionUID 1L;
    @
Id
    
@Column(name "ID"nullable false)
    private 
Integer id;
    @
ManyToOne
    
@JoinColumn(name "ID"referencedColumnName "NOMBRE"insertable falseupdatable false)
    @
Column(name "NOMBRE")
    private 
Integer nombre;
    @
Column(name "APELLIDO")
    private 
String apellido;
    

    public 
Table2() {
    }

    public 
Table2(Integer id) {
        
this.id id;
    }

    public 
Integer getId() {
        return 
id;
    }

    public 
void setId(Integer id) {
        
this.id id;
    }

    public 
Integer getNombre() {
        return 
nombre;
    }

    public 
void setNombre(Integer nombre) {
        
this.nombre nombre;
    }

    public 
String getApellido() {
        return 
apellido;
    }

    public 
void setApellido(String apellido) {
        
this.apellido apellido;
    }

    

    @
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 Table2)) {
            return 
false;
        }
        
Table2 other = (Table2object;
        if ((
this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return 
false;
        }
        return 
true;
    }

    @
Override
    
public String toString() {
        return 
"com.dkcontrol.presupuesto.Table2[id=" id "]";
    }


La relacion entre mis 2 tablas es el campo NOMBRE... pero no logro extraer todos los registros de table2 desde table1

He Copiado varios codigos de ejemplos, pero al ejecutarlos siempre me da algun error, como la definicion errónea del mappedBy, @JoinColumn, en fin lo unico que he podido crear y entender, es una relacion de @OneToOne...

Si alguien tienen algun tutorial bueno en Español, se lo agradeceria mucho el link ó explicarme el funcionamiento de las anotaciones para crear las relaciones entre tablas. Ya hasta lei parte de las Especificafiones del EJB3 de sun pero nada, no logro la BENDITA relación...

PD: sería excelente que netbeans tuviera un asistente para crear las relaciones de las tablas sin tener que usar el motor InnoDB para crearlas...

Gracias...
__________________
--
NOTA: Si haz conseguido la solución a tu problema, por favor edita el titulo del tema colocando el prefijo [SOLUCIONADO], para que otros usuarios puedan encontrar soluciones más rápido.
  #2 (permalink)  
Antiguo 19/08/2009, 08:40
 
Fecha de Ingreso: agosto-2009
Mensajes: 2
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: EJB3 no logro entender las relaciones entre tablas

Pudiste solucionar esto..... de las relaciones.... porque aun yo no puedo

Ayuda ..... con @OnetoOne

De ante mano gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:36.