elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Crud con Strut2 e hibernate
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Crud con Strut2 e hibernate  (Leído 2,091 veces)
jPallol1

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Crud con Strut2 e hibernate
« en: 28 Marzo 2015, 17:04 pm »

Estoy tratando de hacer un crud en Strud2 con hibernate y no consigo combinar dos tablas . Me puede ayudar

La 1 Tabla es Trama
Código
  1. @Table(name="trama", catalog="bd_1")
  2.  
  3. public class Trama  implements java.io.Serializable {
  4.  
  5.     private int traNoca;         //Int
  6.     private int catNoca;       //Enlace con categoria
  7.     private String tradat;       //Dato sin importancia
  8.  
  9.    public Trama() {}
  10.  
  11.    public Trama(int traNoca, int catNoca, String tradat)
  12.    {this.traNoca = traNoca;  this.catNoca = catNoca;  this.tradat = tradat;  }
  13.  
  14.     @Id    
  15.    @Column(name="tra_noca", nullable=false)
  16.     public int getTraNoca() {return this.traNoca;} ES
  17.    public void setTraNoca(int traNoca) {this.traNoca = traNoca; }
  18.  
  19.    @Column(name="cat_noca", nullable=false)
  20.    public int getCatNoca() {return this.catNoca;}
  21.    public void setCatNoca(int catNoca) {this.catNoca = catNoca;}
  22.  
  23.    @Column(name="tra_dat", nullable=false, length=45)
  24.    public String getTradat() {return this.tradat;}
  25.    public void setTradat(String tradat) { this.tradat = tradat;  }
  26.  
  27. }


Este es Su mapeado

Código
  1. <hibernate-mapping>
  2.    <class name="entidad.Trama" table="trama" catalog="bd_1">
  3.        <id name="TraNoca" type="int">
  4.            <column name="tra_noca" />
  5.           <generator class="assigned"></generator>
  6.        </id>
  7.        <property  name="CatNoca" type="int">
  8.            <column name="cat_noca" />
  9.         </property>  
  10.        <property name="Tradat" type="string">
  11.            <column name="cat_dat" length="50" />
  12.        </property>
  13.    </class>
  14. </hibernate-mapping>

La 2 Tabla es Categoria que es la principal

Código
  1. package entidad;
  2.  
  3. import javax.persistence.Column;
  4. import javax.persistence.Entity;
  5. import javax.persistence.Id;
  6. import javax.persistence.Table;
  7.  
  8. @Table(name = "trama", catalog = "bd_1"   )
  9.  
  10. public class Categoria  implements java.io.Serializable {
  11.  
  12.     private int catNoca;
  13.     private String catNom;
  14.  
  15.    public Categoria() {}
  16.  
  17.    public Categoria(int catNoca, String catNom)
  18.    {this.catNoca = catNoca;   this.catNom = catNom;}
  19.  
  20.     @Id    
  21.     @Column(name="cat_noca", nullable=false)
  22.    public int getCatNoca() {return this.catNoca;}
  23.    public void setCatNoca(int catNoca) {this.catNoca = catNoca;}
  24.  
  25.    @Column(name="cat_nom", nullable=false, length=45)
  26.    public String getCatNom() {return this.catNom;}
  27.    public void setCatNom(String catNom) { this.catNom = catNom; }    
  28. }

Este es el Mapeado

Código
  1. <hibernate-mapping>
  2.    <class name="entidad.Categoria" table="categoria" catalog="bd_1">
  3.        <id name="CatNoca" type="int">
  4.            <column name="cat_noca" />
  5.           <generator class="assigned"></generator>
  6.        </id>    
  7.        <property name="CatNom" type="string">
  8.            <column name="cat_nom" length="50" />
  9.        </property>
  10.    </class>
  11. </hibernate-mapping>

Y este es Strut2 que manda la orden

    
Código
  1. public  void detalle2(String noca,T entity) {
  2.  
  3.        Session session = HibernateUtil.getSessionFactory().openSession();
  4.        Transaction beginTransaction = session.beginTransaction();
  5.        session.createSQLQuery("select c.CatNoca, c.CatNom, t.CatNoca, t.TraNoca, t.CatNom, t.tradat  from Trama t INNER JOIN Categoria c ON t.CatNoca="+entity);  
  6.        beginTransaction.commit();
  7.        session.close();
  8. }

La entidad me lo manda


Código
  1. package acciones;
  2.  
  3. import static com.opensymphony.xwork2.Action.INPUT;
  4. import static com.opensymphony.xwork2.Action.SUCCESS;
  5. import com.opensymphony.xwork2.ActionSupport;
  6. import entidad.Categoria;
  7. import java.util.List;
  8. import servicio.ServicioCategoria;
  9.  
  10. public class CategoriaAction extends ActionSupport {
  11.  
  12.    private ServicioCategoria sc= new ServicioCategoria();
  13.    private List<Categoria> lstCat;
  14.    private Categoria cat;
  15.    private String m;//NO IMPORTANTE PARA LA DUDA
  16.    private String i;//NO IMPORTANTE PARA LA DUDA
  17.    private Integer noca;
  18.  
  19.    @Override
  20.    public String input() throws Exception {
  21.        if (getNoca()!=null) {setCat(sc.find(noca));}
  22.        return INPUT;}      
  23.  
  24.    public String detalle2() throws Exception {
  25.        if (getNoca()!=null) {setCat(sc.find(noca)); }
  26.       return INPUT;}  
  27.  
  28.    @Override
  29.    public String execute() throws Exception {return SUCCESS;}
  30.    public String save() {    sc.save(getCat());     return "ok"; }  
  31.    public String remove(){    sc.remove(getNoca());    return "ok";    }
  32.    public String list() throws Exception { lstCat=sc.findAll();  return execute();}
  33.    public String search() throws Exception { lstCat = sc.search(m);return execute();}
  34.    public String indice() throws Exception { lstCat = sc.search(i);return execute();}
  35.  
  36.  
  37.  
  38.    //<editor-fold defaultstate="collapsed" desc="Getter y Setter">  
  39.  
  40.    public ServicioCategoria getSc() {return sc; }  
  41.    public void setSc(ServicioCategoria sc) {this.sc = sc;}
  42.  
  43.    public String getM() { return m;}
  44.    public void setM(String m) {   this.m = m; }
  45.  
  46.    public String getI() { return i; }
  47.    public void setI(String i) { this.i = i;}
  48.  
  49.    public Integer getNoca() { return noca; }
  50.    public void setNoca(Integer noca) {this.noca = noca;}
  51.  
  52.    public Categoria getCat() {return cat;}
  53.    public void setCat(Categoria cat) { this.cat = cat; }
  54.  
  55.    public List<Categoria> getLstCat() {return lstCat;}
  56.    public void setLstCat(List<Categoria> lstCat) {this.lstCat = lstCat;}
  57.  
  58.  
  59. //</editor-fold>
  60. }

Ayudada por

Código
  1. public class ServicioCategoria extends AbstractFacade<Categoria> {
  2.  
  3.    public ServicioCategoria() {super(Categoria.class);}
  4.  
  5.  
  6.  
  7.    //CATEGORIA
  8.  
  9.    public List<Categoria> findAll() {return super.findAll();}
  10.    public void save(Categoria cat) {super.createEdit(cat);}
  11.    public void remove(int noca) {
  12.        final Categoria find = super.find(noca);
  13.        if (find!=null){
  14.        super.remove(find);}
  15.    }
  16.    public Categoria find (int noca) {
  17.        return super.find(noca);
  18.    }
  19.  
  20.    //TRAMA  
  21. }




Código
  1. <%@ taglib prefix="s" uri="/struts-tags" %>
  2. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  3. <!DOCTYPE html>
  4.    <head>
  5.        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6.        <title>JSP Page</title>
  7.    </head>
  8.    <body>
  9.        <br/>
  10.        <h2>Mopstrar Datos</h2>
  11.        <s:iterator>
  12.        <s:form action="categoriaDetalle2">
  13.            <s:label label="Nombre" name="cat.catNoca" />
  14.            <s:label label="Nombre" name="cat.catNom" />
  15.            <s:label label="La 2 tabla" />
  16.             <s:label label="Nombre de trama" name="tra.Tradat" />          
  17.            <s:label label="Nombre de trama" name="tra.catNom" />    
  18.        </s:form>    
  19.        </s:iterator>
  20.  
  21.    </body>
  22. </html>

El JSP SOLO MUESTRA los datos de la tabla categoria
No Consigo unir las tablas estoy desesperado

Mod: Usar etiquetas GeSHi.


« Última modificación: 29 Marzo 2015, 17:40 pm por #!drvy » En línea

Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: Crud con Strut2 e hibernate
« Respuesta #1 en: 28 Marzo 2015, 17:23 pm »

Hola jPallo1,

Por favor encierra tus códigos entre etiquetas GeSHi. En el editor, en la parte superior derecha hay un Combo llamado GeSHi, despliégalo y selecciona el lenguaje deseado, en éste caso Java para las clases y XML para los mapeados. Otra cosa, en lugar de los mapeos .hbm.xml utiliza anotaciones y si es posible utiliza JPA, te provee una capa de abstracción para trabajar más cómodamente.

Respecto a tu pregunta, dices que ambas entidades están relacionadas, pero no veo en ningún lado la relación en los XML. Haz lo de las etiquetas para poder ver tu código mejor.


Un saludo.


En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: Crud con Strut2 e hibernate
« Respuesta #2 en: 29 Marzo 2015, 18:34 pm »

Hola,

Código
  1. session.createSQLQuery("select c.CatNoca, c.CatNom, t.CatNoca, t.TraNoca, t.CatNom, t.tradat  from Trama t INNER JOIN Categoria c ON t.CatNoca="+entity);

Donde dice:

Código
  1. t.CatNoca="+entity

entity, se supe que es una entidad (T), y CatNoca es de tipo integer en la tabla, por lo que ¿cómo puedes compararlos?

Por otra parte, si usas Hibernate, puedes aprovecharlo para obtener los datos con NamedQueries:

Código
  1. @NamedQuery(name = "cat", query = "SELECT c.catNoca, c.catNom " +
  2. ", t.catNoca, t.traNoca, t.catNom, t.tradat "+
  3.    "FROM Trama t, Category c " +
  4.    "JOIN t.catNoca = :cat")
   
Y la llamarías así:

Código
  1. TypedQuery<Organization> q = em.createNamedQuery("query", Organization.class);
  2. q.setParameter("cat", 1); // aqu&#237; le pones el numero de categoria que deseas

La ventaja es que "cat" lo puedes asignar en tiempo de ejecución, por lo que es mucho más flexible. Por cierrto, usa JPA, es muy sencillo.

NOTA: En los NamedQuery, se usan en lugar del nombre de la tabla, el nombre de la entidad y en lugar de los nombres de las columnas, las propiedades de la entidad.


Saludos.
« Última modificación: 29 Marzo 2015, 18:54 pm por Gus Garsaky » En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Crud Generator en Codeigniter
PHP
madpitbull_99 0 6,752 Último mensaje 6 Julio 2011, 20:28 pm
por madpitbull_99
problema en la creacion de un crud en java usando hibernate
Java
ivanchodmd 2 2,509 Último mensaje 7 Julio 2014, 17:11 pm
por ivanchodmd
CRUD PDO UPDATE y DELETE recogiendo varias primary key
Bases de Datos
synysevend90 0 2,575 Último mensaje 5 Abril 2017, 16:16 pm
por synysevend90
Ayuda con CRUD
Bases de Datos
veloso97 1 2,691 Último mensaje 13 Mayo 2018, 21:48 pm
por vicram10
Fetch Api CRUD
Desarrollo Web
iCoke 0 1,417 Último mensaje 6 Febrero 2019, 00:02 am
por iCoke
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines