ORM

di il
1 risposte

ORM

Salve sto riscontrando problemi con il metodo di CRUD di visualizzazione.
L'esercizio e di visualizzare la lista di categorie e abbiamo usato l'orm per farlo quindi nel mio model di prodotti ho:

public class Prodotto {
private int id_prodotti;
private String nome;
private String descrizione;
private Categoria categoria;
......

Mentre nella Categoria ho:
public class Categoria {
private int id_categoria;
private String categoria;
private ArrayList<Prodotto> prodotti;
......

Nel metodo di CRUD abbiamo fatto una visualizzazione da prodotti a categorie in questo modo :

public ArrayList<Prodotto> visualizzaLista(Prodotto p) {
String sql="SELECT ID_PRODOTTI, NOME , DESCRIZIONE, ID_CATEGORIA FROM prodotti AS P, categoria AS C WHERE P.ID_PRODOTTI=C.ID";

ArrayList<Prodotto> listaprodotti = new ArrayList<Prodotto>();
try {
PreparedStatement ps = conn.prepareStatement(sql);

ResultSet rs = ps.executeQuery();
while(rs.next()) {
p = new Prodotto();

p.setId_prodotti(rs.getInt("id_prodotto"));
p.setNome(rs.getString("nome"));
p.setDescrizione(rs.getString("descrizione"));
ArrayList<Prodotto> prodotti = null;
Categoria c= new Categoria();

c.setId_categoria(rs.getInt("id_categoria"));
c.setCategoria(rs.getString("categoria"));
p.setCategoria(c);
listaprodotti.add(p);



}
} catch (SQLException e) {

e.printStackTrace();
}
return listaprodotti;
}

Mentre ora da Categoria a Prodotti dobbiamo visualizzare e avevo fatto in questo modo utilizzando anche un'altro metodo:

public boolean esisteCategoria(ArrayList<Categoria> categorie, int id) {
for(int i=0; i<categorie.size(); i++) {
if(categorie.get(i).getId_categoria()==id) {
return true;
}
}
return false;

}



public ArrayList<Categoria> visualizza() {
String sql=" SELECT ID, CATEGORIA, P.ID_PRODOTTI, P.NOME, P.DESCRIZIONE, P.ID_CATEGORIA FROM PRODOTTI AS P, CATEGORIA AS C WHERE P.ID_CATEGORIA=C.ID";
try {
PreparedStatement ps = conn.prepareStatement(sql);

ResultSet rs = ps.executeQuery();
ArrayList<Categoria> categorie = new ArrayList<Categoria>();

while(rs.next()) {
if(!esisteCategoria(categorie, rs.getInt("id_categoria"))) {

Categoria c = new Categoria();
c.setId_categoria(rs.getInt("id"));
c.setCategoria(rs.getString("categoria"));
Prodotto p = new Prodotto();
p.setId_prodotti(rs.getInt("id_prodotti"));
p.setNome(rs.getString("nome"));
p.setDescrizione(rs.getString("descrizione"));
p.setCategoria(c);
categorie.add(c);
}else {
Prodotto p = new Prodotto();
p.setId_prodotti(rs.getInt("id_prodotti"));
p.setNome(rs.getString("nome"));
p.setDescrizione(rs.getString("descrizione"));
}


}} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return categorie;


}

Voglio solo capire se cosi mi fa visualizzare le categorie. Grazie mille!!!!

1 Risposte

  • Re: ORM

    Alex96 ha scritto:


    L'esercizio e di visualizzare la lista di categorie e abbiamo usato l'orm per farlo
    Scusa ma di quale ORM parli? Dato che hai usato JDBC "nudo e crudo" ....

    Alex96 ha scritto:


    Voglio solo capire se cosi mi fa visualizzare le categorie. Grazie mille!!!!
    Ci sono comunque cose che non quadrano.

    Nel primo metodo fai un
    rs.getString("categoria")

    Ma "categoria" NON è un colonna tirata fuori dalla select.

    Poi scusa, nella prima select si vede ".... WHERE P.ID_PRODOTTI=C.ID"

    Quel C.ID cosa è? E' la chiave primaria della tabella categoria? E come si lega con la tabella prodotti?

    E può darsi ci sia altro, non ho analizzato proprio in dettaglio.
Devi accedere o registrarti per scrivere nel forum
1 risposte