-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 
Author Message
 Post subject: findByExample loses synchronization
PostPosted: Mon Apr 05, 2010 7:58 am 
Newbie

Joined: Mon Mar 08, 2010 3:44 am
Posts: 8
Hello.

I have 3 tables, T_Ficha, T_Ficha_Herramientas and T_Herramientas. The relation between T_Ficha y T_Herramientas is many-to-many.

When I try to obtain all the datas from T_Ficha, I get only all the registers from this table, but the HashSet that connects with T_Herramientas is empty.

I tried to debug my program and I realized that if I check all the registers obtained with the debugger (while it is debugging) then it loads the registers that I check in the debugger.

Example: If I get a List with 10 rows, I check the field getTHerramientas from the datas 2 and 5 and then when I print my List I can see the T_Herramientas from the 2 and 5 rows.


I am using spring with Hibernate.

Here are my files:
TFicha class:
Code:
public class TFicha extends LightEntity implements IsSerializable, BeanModelTag {

   private static final long serialVersionUID = 1L;
   
   private Integer idFicha;
   
   @NotNull
   private TSituacionPublicacion TSituacionPublicacion;
   
   @NotNull
   //TODO: Sacar a texto
   @Size(message = "La longitud del nombre no puede superar 75 caracteres", max = 75)
   private String nomFicha;
   
   //TODO: Sacar a texto
   @Size(message = "La longitud de la descripción no puede superar 250 caracteres", max = 250)
   private String descFicha;
   
   @NotNull
   private Integer mailNormal;
   
   @NotNull
   private Integer mailYamer;
   
   @NotNull
   private Integer nav;
   
   @NotNull
   private Integer fechas;
   
   @NotNull
   private Integer acu;
   
   //TODO: Sacar a texto
   @Size(message = "La longitud del titulo de la ficha no puede superar 50 caracteres", max = 50)
   private String tituloFicha;
   
   private String textoAyuda;
   
   @NotNull
   private String usuModif;
   
   @NotNull
   private Date FModif;
   private Set<TFichaNivelAcceso> TFichaNivelAccesos = new HashSet<TFichaNivelAcceso>(0);
   private Set<TMenu> TMenus = new HashSet<TMenu>(0);
   private Set<TFichaInforme> TFichaInformes = new HashSet<TFichaInforme>(0);
   private Set<THerramientas> THerramientases = new HashSet<THerramientas>(0);

   public TFicha() {
   }

   public TFicha(Integer idFicha,
         TSituacionPublicacion TSituacionPublicacion, String nomFicha,
         Integer mailNormal, Integer mailYamer, Integer nav,
         Integer fechas, Integer acu, String usuModif, Date FModif) {
      this.idFicha = idFicha;
      this.TSituacionPublicacion = TSituacionPublicacion;
      this.nomFicha = nomFicha;
      this.mailNormal = mailNormal;
      this.mailYamer = mailYamer;
      this.nav = nav;
      this.fechas = fechas;
      this.acu = acu;
      this.usuModif = usuModif;
      this.FModif = FModif;
   }

   public TFicha(Integer idFicha,
         TSituacionPublicacion TSituacionPublicacion, String nomFicha,
         String descFicha, Integer mailNormal, Integer mailYamer,
         Integer nav, Integer fechas, Integer acu,
         String tituloFicha, String usuModif, Date FModif,
         String textoAyuda, Set<TFichaNivelAcceso> TFichaNivelAccesos,
         Set<TMenu> TMenus, Set<TFichaInforme> TFichaInformes,
         Set<THerramientas> THerramientases) {
      this.idFicha = idFicha;
      this.TSituacionPublicacion = TSituacionPublicacion;
      this.nomFicha = nomFicha;
      this.descFicha = descFicha;
      this.mailNormal = mailNormal;
      this.mailYamer = mailYamer;
      this.nav = nav;
      this.fechas = fechas;
      this.acu = acu;
      this.tituloFicha = tituloFicha;
      this.usuModif = usuModif;
      this.FModif = FModif;
      this.textoAyuda = textoAyuda;
      this.TFichaNivelAccesos = TFichaNivelAccesos;
      this.TMenus = TMenus;
      this.TFichaInformes = TFichaInformes;
      this.THerramientases = THerramientases;
   }

   public Integer getIdFicha() {
      return this.idFicha;
   }

   public void setIdFicha(Integer idFicha) {
      this.idFicha = idFicha;
   }

   public TSituacionPublicacion getTSituacionPublicacion() {
      return this.TSituacionPublicacion;
   }

   public void setTSituacionPublicacion(
         TSituacionPublicacion TSituacionPublicacion) {
      this.TSituacionPublicacion = TSituacionPublicacion;
   }

   public String getNomFicha() {
      return this.nomFicha;
   }

   public void setNomFicha(String nomFicha) {
      this.nomFicha = nomFicha;
   }

   public String getDescFicha() {
      return this.descFicha;
   }

   public void setDescFicha(String descFicha) {
      this.descFicha = descFicha;
   }

   public Integer getMailNormal() {
      return this.mailNormal;
   }

   public void setMailNormal(Integer mailNormal) {
      this.mailNormal = mailNormal;
   }

   public Integer getMailYamer() {
      return this.mailYamer;
   }

   public void setMailYamer(Integer mailYamer) {
      this.mailYamer = mailYamer;
   }

   public Integer getNav() {
      return this.nav;
   }

   public void setNav(Integer nav) {
      this.nav = nav;
   }

   public Integer getFechas() {
      return this.fechas;
   }

   public void setFechas(Integer fechas) {
      this.fechas = fechas;
   }

   public Integer getAcu() {
      return this.acu;
   }

   public void setAcu(Integer acu) {
      this.acu = acu;
   }

   public String getTituloFicha() {
      return this.tituloFicha;
   }

   public void setTituloFicha(String tituloFicha) {
      this.tituloFicha = tituloFicha;
   }

   public String getUsuModif() {
      return this.usuModif;
   }

   public void setUsuModif(String usuModif) {
      this.usuModif = usuModif;
   }

   public Date getFModif() {
      return this.FModif;
   }

   public void setFModif(Date FModif) {
      this.FModif = FModif;
   }

   public String getTextoAyuda() {
      return this.textoAyuda;
   }

   public void setTextoAyuda(String textoAyuda) {
      this.textoAyuda = textoAyuda;
   }
   public Set<TFichaNivelAcceso> getTFichaNivelAccesos() {
      return this.TFichaNivelAccesos;
   }

   public void setTFichaNivelAccesos(Set<TFichaNivelAcceso> TFichaNivelAccesos) {
      this.TFichaNivelAccesos = TFichaNivelAccesos;
   }

   public Set<TMenu> getTMenus() {
      return this.TMenus;
   }

   public void setTMenus(Set<TMenu> TMenus) {
      this.TMenus = TMenus;
   }

   public Set<TFichaInforme> getTFichaInformes() {
      return this.TFichaInformes;
   }

   public void setTFichaInformes(Set<TFichaInforme> TFichaInformes) {
      this.TFichaInformes = TFichaInformes;
   }

   public Set<THerramientas> getTHerramientases() {
      return this.THerramientases;
   }

   public void setTHerramientases(Set<THerramientas> THerramientases) {
      this.THerramientases = THerramientases;
   }


THerramientas class:
Code:
public class THerramientas extends LightEntity implements IsSerializable, BeanModelTag {

   private static final long serialVersionUID = 1L;
   
   private Integer idHerramienta;
   private TSituacionPublicacion TSituacionPublicacion;
   
   @NotNull
   //TODO: Sacar a texto
   @Size(message = "La longitud del nombre de la herramienta no puede superar 50 caracteres", max = 50)
   private String nombreHerram;
   
   @NotNull
   //TODO: Sacar a texto
   @Size(message = "La longitud del texto de la ventana emergente no puede superar 50 caracteres", max = 50)
   private String tooltip;
   
   @NotNull
   private Integer ordenPosicion;
   
   //TODO: Sacar a texto
   @Size(message = "La longitud de la descripción no puede superar 250 caracteres", max = 250)
   private String descripcion;
   
   @NotNull
   //TODO: Sacar a texto
   @Size(message = "La longitud del nombre del controlador no puede superar 75 caracteres", max = 75)
   private String nombreControlador;
   
   @NotNull
   //TODO: Sacar a texto
   @Size(message = "La longitud del nombre de la clase de estilos no puede superar 50 caracteres", max = 50)
   private String cssIcono;
   
   @NotNull
   //TODO: Sacar a texto
   @Size(message = "La longitud del nombre del usuario modificador no puede superar 20 caracteres", max = 20)
   private String usuModif;
   
   @NotNull
   private Date FModif;
   
   private String claseJava;
   private Set<TInformes> TInformeses = new HashSet<TInformes>(0);
   private Set<TFicha> TFichas = new HashSet<TFicha>(0);

   public THerramientas() {
   }

   public THerramientas(Integer idHerramienta,
         TSituacionPublicacion TSituacionPublicacion, String nombreHerram,
         String tooltip, Integer ordenPosicion, String nombreControlador,
         String cssIcono, String usuModif, Date FModif) {
      this.idHerramienta = idHerramienta;
      this.TSituacionPublicacion = TSituacionPublicacion;
      this.nombreHerram = nombreHerram;
      this.tooltip = tooltip;
      this.ordenPosicion = ordenPosicion;
      this.nombreControlador = nombreControlador;
      this.cssIcono = cssIcono;
      this.usuModif = usuModif;
      this.FModif = FModif;
   }

   public THerramientas(Integer idHerramienta,
         TSituacionPublicacion TSituacionPublicacion, String nombreHerram,
         String tooltip, Integer ordenPosicion, String descripcion,
         String nombreControlador, String cssIcono, String usuModif,
         Date FModif, String claseJava, Set<TInformes> TInformeses,
         Set<TFicha> TFichas) {
      this.idHerramienta = idHerramienta;
      this.TSituacionPublicacion = TSituacionPublicacion;
      this.nombreHerram = nombreHerram;
      this.tooltip = tooltip;
      this.ordenPosicion = ordenPosicion;
      this.descripcion = descripcion;
      this.nombreControlador = nombreControlador;
      this.cssIcono = cssIcono;
      this.usuModif = usuModif;
      this.FModif = FModif;
      this.claseJava = claseJava;
      this.TInformeses = TInformeses;
      this.TFichas = TFichas;
   }

   public Integer getIdHerramienta() {
      return this.idHerramienta;
   }

   public void setIdHerramienta(Integer idHerramienta) {
      this.idHerramienta = idHerramienta;
   }

   public TSituacionPublicacion getTSituacionPublicacion() {
      return this.TSituacionPublicacion;
   }

   public void setTSituacionPublicacion(
         TSituacionPublicacion TSituacionPublicacion) {
      this.TSituacionPublicacion = TSituacionPublicacion;
   }

   public String getNombreHerram() {
      return this.nombreHerram;
   }

   public void setNombreHerram(String nombreHerram) {
      this.nombreHerram = nombreHerram;
   }

   public String getTooltip() {
      return this.tooltip;
   }

   public void setTooltip(String tooltip) {
      this.tooltip = tooltip;
   }

   public Integer getOrdenPosicion() {
      return this.ordenPosicion;
   }

   public void setOrdenPosicion(Integer ordenPosicion) {
      this.ordenPosicion = ordenPosicion;
   }

   public String getDescripcion() {
      return this.descripcion;
   }

   public void setDescripcion(String descripcion) {
      this.descripcion = descripcion;
   }

   public String getNombreControlador() {
      return this.nombreControlador;
   }

   public void setNombreControlador(String nombreControlador) {
      this.nombreControlador = nombreControlador;
   }

   public String getCssIcono() {
      return this.cssIcono;
   }

   public void setCssIcono(String cssIcono) {
      this.cssIcono = cssIcono;
   }

   public String getUsuModif() {
      return this.usuModif;
   }

   public void setUsuModif(String usuModif) {
      this.usuModif = usuModif;
   }

   public Date getFModif() {
      return this.FModif;
   }

   public void setFModif(Date FModif) {
      this.FModif = FModif;
   }

   public String getClaseJava() {
      return this.claseJava;
   }

   public void setClaseJava(String claseJava) {
      this.claseJava = claseJava;
   }
   public Set<TInformes> getTInformeses() {
      return this.TInformeses;
   }

   public void setTInformeses(Set<TInformes> TInformeses) {
      this.TInformeses = TInformeses;
   }

   public Set<TFicha> getTFichas() {
      return this.TFichas;
   }

   public void setTFichas(Set<TFicha> TFichas) {
      this.TFichas = TFichas;
   }


TFicha.hbm.xml
Code:
<hibernate-mapping>
    <class name="red.es.reporte.domain.beans.TFicha" table="T_FICHA">
        <id name="idFicha" type="integer">
            <column name="ID_FICHA" precision="22" scale="0" />
            <generator class="sequence">
                <param name="sequence">T_FICHA_SEC</param>
            </generator>
        </id>
        <many-to-one name="TSituacionPublicacion" class="red.es.reporte.domain.beans.TSituacionPublicacion" fetch="select">
            <column name="ID_SITUACION" precision="22" scale="0" not-null="true" />
        </many-to-one>
        <property name="nomFicha" type="string">
            <column name="NOM_FICHA" length="75" not-null="true" unique="true" />
        </property>
        <property name="descFicha" type="string">
            <column name="DESC_FICHA" length="250" />
        </property>
        <property name="mailNormal" type="integer">
            <column name="MAIL_NORMAL" precision="22" scale="0" not-null="true" />
        </property>
        <property name="mailYamer" type="integer">
            <column name="MAIL_YAMER" precision="22" scale="0" not-null="true" />
        </property>
        <property name="nav" type="integer">
            <column name="NAV" precision="22" scale="0" not-null="true" />
        </property>
        <property name="fechas" type="integer">
            <column name="FECHAS" precision="22" scale="0" not-null="true" />
        </property>
        <property name="acu" type="integer">
            <column name="ACU" precision="22" scale="0" not-null="true" />
        </property>
        <property name="tituloFicha" type="string">
            <column name="TITULO_FICHA" length="50" />
        </property>
        <property name="usuModif" type="string">
            <column name="USU_MODIF" length="20" not-null="true" />
        </property>
        <property name="FModif" type="date">
            <column name="F_MODIF" length="7" not-null="true" />
        </property>
        <property name="textoAyuda" type="string">
            <column name="TEXTO_AYUDA" length="500" />
        </property>
        <set name="TFichaNivelAccesos" inverse="true" lazy="true" table="T_FICHA_NIVEL_ACCESO" fetch="select">
            <key>
                <column name="ID_FICHA" precision="22" scale="0" not-null="true" unique="true" />
            </key>
            <one-to-many class="red.es.reporte.domain.beans.TFichaNivelAcceso" />
        </set>
        <set name="TMenus" inverse="true" lazy="true" table="T_MENU" fetch="select">
            <key>
                <column name="ID_FICHA" precision="22" scale="0" not-null="true" />
            </key>
            <one-to-many class="red.es.reporte.domain.beans.TMenu" />
        </set>
        <set name="TFichaInformes" inverse="true" lazy="true" table="T_FICHA_INFORME" fetch="select">
            <key>
                <column name="ID_FICHA" precision="22" scale="0" not-null="true" />
            </key>
            <one-to-many class="red.es.reporte.domain.beans.TFichaInforme" />
        </set>
        <set name="THerramientases" inverse="false" lazy="true" table="T_FICHA_HERRAMIENTA" fetch="select">
            <key>
                <column name="ID_FICHA" precision="22" scale="0" not-null="true" />
            </key>
            <many-to-many entity-name="red.es.reporte.domain.beans.THerramientas">
                <column name="ID_HERRAMIENTA" precision="22" scale="0" not-null="true" />
            </many-to-many>
        </set>
    </class>
</hibernate-mapping>


THerramientas.hbm.xml
Code:
<hibernate-mapping>
    <class name="red.es.reporte.domain.beans.THerramientas" table="T_HERRAMIENTAS">
        <id name="idHerramienta" type="integer">
            <column name="ID_HERRAMIENTA" precision="22" scale="0" />
            <generator class="sequence">
                <param name="sequence">T_HERRAMIENTAS_SEC</param>
            </generator>
        </id>
        <many-to-one name="TSituacionPublicacion" class="red.es.reporte.domain.beans.TSituacionPublicacion" fetch="select">
            <column name="ID_SITUACION" precision="22" scale="0" not-null="true" />
        </many-to-one>
        <property name="nombreHerram" type="string">
            <column name="NOMBRE_HERRAM" length="50" not-null="true" unique="true" />
        </property>
        <property name="tooltip" type="string">
            <column name="TOOLTIP" length="50" not-null="true" />
        </property>
        <property name="ordenPosicion" type="integer">
            <column name="ORDEN_POSICION" precision="22" scale="0" not-null="true" unique="true" />
        </property>
        <property name="descripcion" type="string">
            <column name="DESCRIPCION" length="250" />
        </property>
        <property name="nombreControlador" type="string">
            <column name="NOMBRE_CONTROLADOR" length="75" not-null="true" />
        </property>
        <property name="cssIcono" type="string">
            <column name="CSS_ICONO" length="50" not-null="true" />
        </property>
        <property name="usuModif" type="string">
            <column name="USU_MODIF" length="20" not-null="true" />
        </property>
        <property name="FModif" type="date">
            <column name="F_MODIF" length="7" not-null="true" />
        </property>
        <property name="claseJava" type="string">
            <column name="CLASE_JAVA" length="50" />
        </property>
        <set name="TInformeses" inverse="true" lazy="true" table="T_INFORME_HERRAMIENTA" fetch="select">
            <key>
                <column name="ID_HERRAMIENTA" precision="22" scale="0" not-null="true" />
            </key>
            <many-to-many entity-name="red.es.reporte.domain.beans.TInformes">
                <column name="ID_INFORME" precision="22" scale="0" not-null="true" />
            </many-to-many>
        </set>
        <set name="TFichas" inverse="true" lazy="true" table="T_FICHA_HERRAMIENTA" fetch="select">
            <key>
                <column name="ID_HERRAMIENTA" precision="22" scale="0" not-null="true" />
            </key>
            <many-to-many entity-name="red.es.reporte.domain.beans.TFicha">
                <column name="ID_FICHA" precision="22" scale="0" not-null="true" />
            </many-to-many>
        </set>
    </class>
</hibernate-mapping>


And the function from my DAO.
Code:
public List<TFicha> buscaPorEjemplo(TFicha instance) throws RuntimeException {
      logger.info("Buscando una instancia de TFicha por medio de un ejemplo");
      DetachedCriteria criteria = DetachedCriteria.forClass(TFicha.class);
      try {
         List<TFicha> results = getHibernateTemplate().findByCriteria(criteria);
         logger.info("Búsqueda satisfactoria, se han encontrado: " + results.size() + " resultados");
         return results;
      } catch (RuntimeException re) {
         logger.error("Ha fallado el proceso de búsqueda: ", re);
         throw re;
      }
   }


Why is it happening?, do I have something wrong in my configuration files?

Thank you.


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.