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

Mostrar datos en arraylist de clases relacionadas M-M

Estas en el tema de Mostrar datos en arraylist de clases relacionadas M-M en el foro de Java en Foros del Web. Hola a todos, anteriorente hice una aplicación en vb.net, pero ahora quiero pasarlo este sistema a java y estoy desarrollando, y presente con un inconveniente: ...
  #1 (permalink)  
Antiguo 18/06/2015, 14:57
 
Fecha de Ingreso: junio-2015
Mensajes: 1
Antigüedad: 9 años, 5 meses
Puntos: 0
Información Mostrar datos en arraylist de clases relacionadas M-M

Hola a todos, anteriorente hice una aplicación en vb.net, pero ahora quiero pasarlo este sistema a java y estoy desarrollando, y presente con un inconveniente:

1. Pasé mis tablas de mysql a clases de java, las tablas son las sigueintes:
- Almacen
- Almacen_TipoAlmacen
- TipoAlmacen

Es una relación de muchos a muchos.



Código:
package ComponenteModelo;
public class Almacen {
    private Integer idAlmacen;
    private String aCodigo;
    private String aDescripcion;
    private String aLugar;
    private String aObservaciones;
    private boolean aEstado;

    public Integer getIdAlmacen() {
        return idAlmacen;
    }
    public void setIdAlmacen(Integer idAlmacen) {
        this.idAlmacen = idAlmacen;
    }
    public String getaCodigo() {
        return aCodigo;
    }
    public void setaCodigo(String aCodigo) {
        this.aCodigo = aCodigo;
    }
    public String getaDescripcion() {
        return aDescripcion;
    }
    public void setaDescripcion(String aDescripcion) {
        this.aDescripcion = aDescripcion;
    }    
    public String getaLugar() {
        return aLugar;
    }
    public void setaLugar(String aLugar) {
        this.aLugar = aLugar;
    }
    public String getaObservaciones() {
        return aObservaciones;
    }
    public void setaObservaciones(String aObservaciones) {
        this.aObservaciones = aObservaciones;
    }
    public boolean getaEstado() {
        return aEstado;
    }
    public void setaEstado(boolean aEstado) {
        this.aEstado = aEstado;
    }   
}
Código:
package ComponenteModelo;
public class Almacen_TipoAlmacen {
    private TipoAlmacen tipoalmacen;
    private Almacen almacen;
    private boolean estado;

    public TipoAlmacen getTipoalmacen() {
        return tipoalmacen;
    }
    public void setTipoalmacen(TipoAlmacen tipoalmacen) {
        this.tipoalmacen = tipoalmacen;
    }
    public Almacen getAlmacen() {
        return almacen;
    }
    public void setAlmacen(Almacen almacen) {
        this.almacen = almacen;
    }
    public boolean getEstado() {
        return estado;
    }
    public void setEstado(boolean estado) {
        this.estado = estado;
    }    
}
Código:
package ComponenteModelo;

public class TipoAlmacen {
    private Integer idtipoalmacen;
    private String nombre;

    public Integer getIdtipoalmacen() {
        return idtipoalmacen;
    }
    public void setIdtipoalmacen(Integer idtipoalmacen) {
        this.idtipoalmacen = idtipoalmacen;
    }
    public String getNombre() {
        return nombre;
    }
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }  
}
Hasta ahi no tengo problemas en ingresar y mostrar los datos; el detalle es cuando quiero ver en una tabla el codigo de almacen, el nombre y el tipodealmacen, con consultas sql, estuve viendo así:

Código:
public static ArrayList<Almacen> mostrarAlmacen() throws SQLException {
        Connection cnn = BD.getConnection();
        PreparedStatement ps = null;
        ArrayList<Almacen> lista = new ArrayList<Almacen>();
        ps = cnn.prepareStatement("SELECT `aCodigo`,`tipoalmacen`.`idtipoalmacen`,`aDescripcion`,`empresa`.`idempresa`,`aLugar`,`aObservaciones`,`aEstado` from almacen \n" +
        "SELECT `aCodigo`,`tipoalmacen`.`nombre`,`aDescripcion`,`aLugar`,`aObservaciones`,`aEstado` from almacen \n" +
        "inner join almacen_tipoalmacen on almacen.idalmacen=almacen_tipoalmacen.idalmacen\n" +
        "inner join tipoalmacen on almacen_tipoalmacen.idtipoalmacen=tipoalmacen.idtipoalmacen\n" +
        "GROUP BY ACODIGO");
        ResultSet rs = ps.executeQuery();
        while (rs.next()) {
            Almacen Alm = new Almacen();         
            Alm.setaCodigo(rs.getString(1));            
            Alm.setaDescripcion(rs.getString(3));
            Alm.setaLugar(rs.getString(5));
            Alm.setaObservaciones(rs.getString(6));
            Alm.setaEstado(rs.getBoolean(7));
            lista.add(Alm);
        }
        cnn.close();
        ps.close();
        return lista;
    }
Ahi solo me muestra los datos de la tabla almacen en el arraylist para que me muesre el tipo tengo que instanciar la clase Tipoalmacen ? o Almacen_tipoAlmacen y como se puede hacer cuando son de mas tablas ya sea 3 o 4 tablas.

Por favor si me pueden orientar, gracias de antemano.
  #2 (permalink)  
Antiguo 19/06/2015, 00:33
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: Mostrar datos en arraylist de clases relacionadas M-M

Buenas,

Eres tu mismo el que estas creando la estructura de objetos. Si quieres aniadir el tipo almacen tienes que crearte un objeto TipoAlmacen, setearle el id+nombre y aniadirlo al objeto almacen antes de meter este ultimo al arraylist.

Lo que no entiendo muy bien es para que tienes esa table de union almacen_tipoalmacen. Para que esa relacion de muchos a muchos? Acaso un almacen puede ser de varios tipos a la vez?

Un saludo
__________________
If to err is human, then programmers are the most human of us

Etiquetas: arraylist, atributos, clases, relacionadas
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 14:00.