org.hibernate.exception.SQLGrammarException: could not execute query

Buenos días a todos,

soy nuevo en hibernate.

Tengo un problema con hibernate ya que en las tablas en las que estoy trabajando no hay ninguna relación referencial y una de ellas no tiene llaves primarias (tabla2). No puedo cambiar el modelo ya que es de una empresa y no medan esta opción, a demás es altamente impactante.

Actualmente estoy manejando los query con la utilidad nativa por inconvenientes anteriormente presentados por criterial y query.

Me aparece el error expuesto en el foro pero ya he intentado todo para desarrollarlo, recuerden que el problema radica que las tablas manejadas no tienen integridad referencial y además tienen ambas entidadades columnas con el mismo nombre.

Describo lo que he hecho actualmente para dar solución al problema:

1) Utilice addEntity() para agregar el alias que utiliza la tabla.
2) Sin utilizar addEntity tampoco funciona
3) En la construcción de los resultados de la sentencia realizo la siguiente transformación consulta.setResultTransformer( Transformers.aliasToBean( clase ) );
4) para que no hallan problemas con los atributos traidos del select se agregan todos los atributos de las tablas con sus respectivos alias con el método addscalar();
5) He seteado los parámetros son setParameter y setString pero no se soluciona el problema

6) Lo único raro que veo en hibernate es que la sentencia transformada para el los parámetros aparecen con el signo de interrogación, aunque estos esten en la sentencia inicial

A continuación doy los soportes para evaluar el problema:

PruebaUsuario.main() construcción sentencia después de escalar los atributos : SELECT {tx.*}, {o.*} FROM co.modelo.Hibernate.pojos.tabla1 tx, co.modelo.Hibernate.pojos.tabla2 o WHERE tx.ety = o.ety AND tx.ordid = o.ordid AND tx.servicio = o.servicio AND tx.ety = :ety AND o.perid = :ref1 AND tx.estado = 'CAPTURADA' AND TRUNC(SYSDATE) >= tx.fechasolicitud + :dias AND o.dreferencia2 = :ref2 AND o.dreferencia3 = :ref3

Hibernate: SELECT tx.tickid as tickid0_0_, tx.ordid as ordid0_0_, tx.fechasolicitud as fecsolic3_0_0_, tx.logfechaproceso as fecproce4_0_0_, tx.valor as valor0_0_, tx.valor2 as valor26_0_0_, tx.estado as estado0_0_, tx.codtx as codtx0_0_, tx.bank as bank0_0_, tx.ety as ety0_0_, tx.servicio as servicio0_0_, tx.ciclo as ciclo0_0_, tx.pagosys as pags13_0_0_, tx.prlg_Code as prlg14_0_0_, tx.ref_Match as ref15_0_0_, tx.filtro as filtro0_0_, tx.logcmpuno as logcmpuno0_0_, tx.idgroup as idgroup0_0_, tx.sendmail as sendmail0_0_, tx.lggcode as lggcode0_0_, o.ety as ety1_1_, o.ordid as ordid1_1_, o.perid as perid1_1_, o.servicio as servicio1_1_, o.dvalor as dvalor1_1_, o.dvalor2 as dvalor26_1_1_, o.destado as destado1_1_, o.ordqty as ordqty1_1_, o.dtot as dtot9_1_1_, o.dref2 as dref10_1_1_, o.dref3 as dref11_1_1_, o.dcom as dcom1_1_, o.dfecha as dfecha1_1_, o.dfechareal as dfecr14_1_1_, o.dflag_Dbcr as dflag15_1_1_, o.dsrvcurrency as dsrvc16_1_1_, o.dpagcurrency as dpagc17_1_1_, o.dvaltrm as dvaltrm1_1_, o.dconsecutivo as dconse19_1_1_ FROM co.modelo.Hibernate.pojos.Tabla1 tx, co.modelo.Hibernate.pojos.Tabla2 o WHERE tx.ety = o.ety AND tx.ordid = o.ordid AND tx.servicio = o.servicio AND tx.ety = ? AND o.perid = ? AND tx.estado = 'CAPTURADA' AND TRUNC(SYSDATE) >= tx.fechasolicitud + ? AND o.dreferencia2 = ? AND o.dreferencia3 = ?

Error:

Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not execute query
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.loader.Loader.doList(Loader.java:2235)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2129)
at org.hibernate.loader.Loader.list(Loader.java:2124)
at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:312)
at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1723)
at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:165)
at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:175)
at co.modelo.hibernate.DAO.PruebaUsuario.main(PruebaUsuario.java:167)
Caused by: java.sql.SQLException: ORA-00933: comando SQL no terminado correctamente

at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:573)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1891)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteDescribe(TTC7Protocol.java:830)
at oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:2391)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2672)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:589)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:527)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1812)
at org.hibernate.loader.Loader.doQuery(Loader.java:697)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
at org.hibernate.loader.Loader.doList(Loader.java:2232)
... 7 more

Agradezco si depronto existe alguna solución al problema o si defenitivamente por el modelo de la base de datos no se puede dar solución.

Gracias por sus respuestas.

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de neko069

Como que estás usando la

Como que estás usando la sintaxis de un query nativo con sintaxis de HQL no?
Lo digo por el nombre de las tablas, que pones las clases de Hibernate, y porque pones éso de {tx.*}, {o.*} o igual yo no lo he trabajado así ...
Porqué no pruebas haciendo la consulta directamente en tú navegador de base de datos, y cuando te salga ahí, la traspasas a código Java.

Imagen de DragonNegro

SQLGrammarException

Como estaba comentando como la base de datos tiene una mala integridad referencial como la tabla tabla2 que tiene llave foránea pero no primaría, pues la única forma que me funciono en otro query que realiza la aplicación fue realizandolo en código nativo y logicamente que solamente se involucra solamente una tabla en el query a diferencia del actual que es tresmil veces más complejo a mi percepción .

La explicación de la utilización de {tx.*}..., según lo que he encontrado en internet cuando dos entidades tienen nombres de columnas iguales la alternativa es agregar los métodos addEntity("alias", clase) y adicionalmente para que no falle la sentencia hay que colocar los alias de las tablas en el select así como se encuentran actualmente el primer select expuesto en el caso.

El select inicial que construyo para pasarlo por parámetro al método createSQLQuery y luego ejecutarlo en con el método .list() si lo ejecuto en la base de datos corre correctamente y trae la información que estoy buscando pero si lo desarrollo en hibernate siempre me sale el error anteriormente expuesto.

Si realizo la metodología estandar que es con la clase Query no me funciona ya que me retorna el primer registro duplicado por la cantidad de coincidencias que existen en el query (Estas coincidencias son tuplas distintas de la base de datos), por lo tanto la información que trae se duplica y no se encuentra completa como la trae el Query.

Pero si existe otra manera de realizar este tipo de sentencia para tablas con integridad referencial pobre, agradecería si me lo hicieran saber para realizar las pruebas, por que creo que he intentado todo.

Gracias por la atención y respuesta dadas.

Imagen de Sr. Negativo

Puedes usar BrainLeg Solo

Puedes usar BrainLeg

Solo pega tu excepción y busca

Imagen de neko069

Por éso..

A poco si corres:

SELECT {tx.*}, {o.*} FROM co.modelo.Hibernate.pojos.tabla1 tx, co.modelo.Hibernate.pojos.tabla2 o WHERE tx.ety = o.ety AND tx.ordid = o.ordid AND tx.servicio = o.servicio AND tx.ety = :ety AND o.perid = :ref1 AND tx.estado = 'CAPTURADA' AND TRUNC(SYSDATE) >= tx.fechasolicitud + :dias AND o.dreferencia2 = :ref2 AND o.dreferencia3 = :ref3

En tu navegador de base de datos si corre? con todo y los nombres calificados de las clases?

Imagen de DragonNegro

Ya realice modificaciones y nada

Quite los corchetes del query ( {tx.*}...) ejecuto el query actualizado en la BD y funciona y en hibernate presenta el mismo error.

Imagen de neko069

...

A ver, postea tus entidades, por favor, entre los tags de <code>.

Imagen de DragonNegro

Código de la aplicación

Entidad tabla1

  1. package co.modelo.hibernate.pojos;
  2.  
  3. import java.math.BigDecimal;
  4. import java.text.ParseException;
  5. import java.text.SimpleDateFormat;
  6. import java.util.Date;
  7. import java.io.Serializable;
  8.  
  9. public class Tabla1 implements Serializable {
  10.  
  11.  
  12.         private static final long       serialVersionUID        = 1L;
  13.         private String            tickid;
  14.         private String            ordid;
  15.         private Date                fechasolicitud;
  16.         private String            logfechaproceso;
  17.         private BigDecimal            valor;
  18.         private BigDecimal            valor2;
  19.         private String            estado;
  20.         private String            codtx;
  21.         private String            bank;
  22.         private String            ety;
  23.         private String            servicio;
  24.        
  25.  
  26.  
  27.         private BigDecimal                  ciclo;
  28.  
  29.         private BigDecimal          pagossys;
  30.  
  31.         private BigDecimal        prlg_Code;
  32.        
  33.         private String            ref_Match;
  34.         private String            filtro;
  35.         private String            logcmpuno;
  36.         private String            idgroup;
  37.         private String            sendmail;
  38.         private String            lggcode;
  39.  
  40.         public Tabla1() {
  41.  
  42.         }
  43.  
  44.         public Tabla1( String tickedid ) {
  45.  
  46.                 this.tickid = tickedid;
  47.         }
  48.  
  49.  
  50.         public String getLogFechaProceso() {
  51.  
  52.                 return this.logfechaproceso;
  53.         }
  54.  
  55.         public void setLogFechaProceso( String logfechaProceso ) throws Exception {
  56.  
  57.                 // TODO: Validar que al enviar un nulo en el string no falle la aplicación según la sugerencia dada.
  58.                 if ( logfechaProceso != null ) {
  59.  
  60.                         try {
  61.  
  62.                                 SimpleDateFormat sf = new SimpleDateFormat( "dd/MM/yyyy HH:mm:ss" );
  63.                                 Date date = sf.parse( logfechaProceso );
  64.                                 this.logfechaproceso = sf.format( date );
  65.  
  66.                         } catch ( ParseException e ) {
  67.                                 // TODO: handle exception
  68.                                 e.printStackTrace();
  69.                                 throw new Exception( "El formato del parámetro fechaproceso no corresponde a dd/MM/yyyy HH:mm:ss" );
  70.                         }
  71.  
  72.                 } else {
  73.  
  74.                         this.logfechaproceso = logfechaProceso;
  75.  
  76.                 }
  77.  
  78.         }
  79.  
  80.        
  81.   public String getTickid() {
  82.  
  83.         return tickid;
  84.   }
  85.  
  86.        
  87.   public void setTickid( String tickid ) {
  88.  
  89.         this.tickid = tickid;
  90.   }
  91.  
  92.        
  93.   public String getOrdid() {
  94.  
  95.         return ordid;
  96.   }
  97.  
  98.        
  99.   public void setOrdid( String ordid ) {
  100.  
  101.         this.ordid = ordid;
  102.   }
  103.  
  104.        
  105.   public Date getFechasolicitud() {
  106.  
  107.         return fechasolicitud;
  108.   }
  109.  
  110.        
  111.   public void setFechasolicitud( Date fechasolicitud ) {
  112.  
  113.         this.fechasolicitud = fechasolicitud;
  114.   }
  115.  
  116.        
  117.   public BigDecimal getValor() {
  118.  
  119.         return valor;
  120.   }
  121.  
  122.        
  123.   public void setValor( BigDecimal valor ) {
  124.  
  125.         this.valor = valor;
  126.   }
  127.  
  128.        
  129.   public BigDecimal getValor2() {
  130.  
  131.         return valor2;
  132.   }
  133.  
  134.        
  135.   public void setValor2( BigDecimal valor2 ) {
  136.  
  137.         this.valor2 = valor2;
  138.   }
  139.  
  140.        
  141.   public String getEstado() {
  142.  
  143.         return estado;
  144.   }
  145.  
  146.        
  147.   public void setEstado( String estado ) {
  148.  
  149.         this.estado = estado;
  150.   }
  151.  
  152.        
  153.   public String getCodtx() {
  154.  
  155.         return codtx;
  156.   }
  157.  
  158.        
  159.   public void setCodtx( String codtx ) {
  160.  
  161.         this.codtx = codtx;
  162.   }
  163.  
  164.        
  165.   public String getBank() {
  166.  
  167.         return bank;
  168.   }
  169.  
  170.        
  171.   public void setBank( String bank ) {
  172.  
  173.         this.bank = bank;
  174.   }
  175.  
  176.        
  177.   public String getEty() {
  178.  
  179.         return ety;
  180.   }
  181.  
  182.        
  183.   public void setEty( String ety ) {
  184.  
  185.         this.ety = ety;
  186.   }
  187.  
  188.        
  189.   public String getServicio() {
  190.  
  191.         return servicio;
  192.   }
  193.  
  194.        
  195.   public void setServicio( String servicio ) {
  196.  
  197.         this.servicio = servicio;
  198.   }
  199.  
  200.        
  201.   public BigDecimal getCiclo() {
  202.  
  203.         return ciclo;
  204.   }
  205.  
  206.        
  207.   public void setCiclo( BigDecimal ciclo ) {
  208.  
  209.         this.ciclo = ciclo;
  210.   }
  211.  
  212.        
  213.   public BigDecimal getPagossys() {
  214.  
  215.         return pagossys;
  216.   }
  217.  
  218.        
  219.   public void setPagossys( BigDecimal pagossys ) {
  220.  
  221.         this.pagossys = pagossys;
  222.   }
  223.  
  224.        
  225.   public BigDecimal getPrlg_Code() {
  226.  
  227.         return prlg_Code;
  228.   }
  229.  
  230.        
  231.   public void setPrlg_Code( BigDecimal prlg_Code ) {
  232.  
  233.         this.prlg_Code = prlg_Code;
  234.   }
  235.  
  236.        
  237.   public String getRef_Match() {
  238.  
  239.         return ref_Match;
  240.   }
  241.  
  242.        
  243.   public void setRef_Match( String ref_Match ) {
  244.  
  245.         this.ref_Match = ref_Match;
  246.   }
  247.  
  248.        
  249.   public String getFiltro() {
  250.  
  251.         return filtro;
  252.   }
  253.  
  254.        
  255.   public void setFiltro( String filtro ) {
  256.  
  257.         this.filtro = filtro;
  258.   }
  259.  
  260.        
  261.   public String getLogcmpuno() {
  262.  
  263.         return logcmpuno;
  264.   }
  265.  
  266.        
  267.   public void setLogcmpuno( String logcmpuno ) {
  268.  
  269.         this.logcmpuno = logcmpuno;
  270.   }
  271.  
  272.        
  273.   public String getIdgroup() {
  274.  
  275.         return idgroup;
  276.   }
  277.  
  278.        
  279.   public void setIdgroup( String idgroup ) {
  280.  
  281.         this.idgroup = idgroup;
  282.   }
  283.  
  284.        
  285.   public String getSendmail() {
  286.  
  287.         return sendmail;
  288.   }
  289.  
  290.        
  291.   public void setSendmail( String sendmail ) {
  292.  
  293.         this.sendmail = sendmail;
  294.   }
  295.  
  296.        
  297.   public String getLggcode() {
  298.  
  299.         return lggcode;
  300.   }
  301.  
  302.        
  303.   public void setLggcode( String lggcode ) {
  304.  
  305.         this.lggcode = lggcode;
  306.   }
  307.        
  308.        
  309. }

Mapeo de la entidad tabla1

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  3. <hibernate-mapping>
  4.   <class name="co.modelo.hibernate.pojos.Tabla1" table="Tabla1">
  5.     <id name="tickid" type="string">
  6.       <column length="35" name="tickid"/>
  7.       <generator class="assigned"/>  <!-- Anteriromete se encontraba asignado assigned -->
  8.     </id>
  9.     <property name="ordid" type="string">
  10.       <column length="35" name="ordid"/>
  11.     </property>
  12.     <property name="fechasolicitud" type="timestamp">
  13.       <column length="7" name="fechasolicitud"/>
  14.     </property>
  15.     <property name="logfechaproceso" type="string">
  16.       <column length="35" name="logfechaproceso"/>
  17.     </property>
  18.     <property name="valor" type="big_decimal">
  19.       <column name="valor" precision="18"/>
  20.     </property>
  21.     <property name="valor2" type="big_decimal">
  22.       <column name="valor2" precision="18"/>
  23.     </property>
  24.     <property name="estado" type="string">
  25.       <column length="50" name="estado"/>
  26.     </property>
  27.     <property name="codtx" type="string">
  28.       <column length="35" name="codtx"/>
  29.     </property>
  30.     <property name="bank" type="string">
  31.       <column length="50" name="bank"/>
  32.     </property>
  33.     <property name="ety" type="string">
  34.       <column length="35" name="ety"/>
  35.     </property>
  36.     <property name="servicio" type="string">
  37.       <column length="35" name="servicio"/>
  38.     </property>
  39.     <property name="ciclo" type="big_decimal">
  40.       <column name="ciclo" precision="2" scale="0"/>
  41.     </property>
  42.     <property name="pagosys" type="big_decimal">
  43.       <column name="pagosys" precision="4" scale="0"/>
  44.     </property>
  45.     <property name="prlg_Code" type="big_decimal">
  46.       <column name="prlg_Code" precision="10" scale="0"/>
  47.     </property>
  48.     <property name="ref_Match" type="string">
  49.       <column length="50" name="ref_Match"/>
  50.     </property>
  51.     <property name="filtro" type="string">
  52.       <column length="20" name="filtro"/>
  53.     </property>
  54.     <property name="logcmpuno" type="string">
  55.       <column length="20" name="logcmpuno"/>
  56.     </property>
  57.     <property name="idgroup" type="string">
  58.       <column length="35" name="idgroup"/>
  59.     </property>
  60.     <property name="sendmail" type="string">
  61.       <column length="20" name="sendmail"/>
  62.     </property>
  63.     <property name="lggcode" type="string">
  64.       <column length="3" name="lggcode"/>
  65.     </property>
  66.   </class>
  67. </hibernate-mapping>

Entidad tabla2 java

  1. package co.modelo.hibernate.pojos;
  2.  
  3. import java.io.Serializable;
  4. import java.math.BigDecimal;
  5. import java.util.Date;
  6.  
  7.  
  8.  
  9. public class Tabla2 implements Serializable {
  10.  
  11.     private static final long serialVersionUID = 3L;
  12.    
  13.  
  14.     private String ety;    
  15.     private String ordid;
  16.     private String perid;
  17.     private String servicio;
  18.     private BigDecimal dvalor;
  19.     private BigDecimal dvalor2;
  20.     private String destado;
  21.     private String ordqty;
  22.     private BigDecimal dtot;
  23.     private String dref2;
  24.     private String dref3;
  25.     private String dcom;
  26.     private Date dfecha;
  27.     private BigDecimal dfechareal;
  28.     private String dflag_Dbcr;
  29.     private String dsrvcurrency;
  30.     private String dpagcurrency;
  31.     private BigDecimal dvaltrm;
  32.     private BigDecimal dconsecutivo;
  33.  
  34.     public Tabla2() {
  35.         ety = "";
  36.         ordid = "";
  37.         perid = "";
  38.         servicio = "";
  39.         dvalor = null;
  40.         dvalor2 = null;
  41.         destado = "OK";
  42.         ordqty = "";
  43.         dtot = null;
  44.         dref2 = "";
  45.         dref3 = "";
  46.         dcom = "";
  47.         dfecha = new Date();
  48.         dfechareal = null;
  49.         dflag_Dbcr = "";
  50.         dsrvcurrency = "";
  51.         dpagcurrency = "";
  52.         dvaltrm = null;
  53.  
  54.     }
  55.                
  56.     public String getEty() {
  57.    
  58.         return ety;
  59.  
  60.     }
  61.  
  62.                
  63.     public void setEty( String ety ) {
  64.    
  65.         this.ety = ety;
  66.     }
  67.  
  68.  
  69.  
  70.                
  71.     public String getOrdid() {
  72.    
  73.         return ordid;
  74.     }
  75.  
  76.  
  77.  
  78.                
  79.     public void setOrdid( String ordid ) {
  80.    
  81.         this.ordid = ordid;
  82.     }
  83.  
  84.  
  85.  
  86.                
  87.     public String getPerid() {
  88.    
  89.         return perid;
  90.     }
  91.  
  92.  
  93.  
  94.                
  95.     public void setPerid( String perid ) {
  96.    
  97.         this.perid = perid;
  98.     }
  99.  
  100.  
  101.  
  102.                
  103.     public String getServicio() {
  104.    
  105.         return servicio;
  106.     }
  107.  
  108.  
  109.  
  110.                
  111.     public void setServicio( String servicio ) {
  112.    
  113.         this.servicio = servicio;
  114.     }
  115.  
  116.  
  117.  
  118.                
  119.     public BigDecimal getDvalor() {
  120.    
  121.         return dvalor;
  122.     }
  123.  
  124.  
  125.  
  126.                
  127.     public void setDvalor( BigDecimal dvalor ) {
  128.    
  129.         this.dvalor = dvalor;
  130.     }
  131.  
  132.  
  133.  
  134.                
  135.     public BigDecimal getDvalor2() {
  136.    
  137.         return dvalor2;
  138.     }
  139.  
  140.  
  141.  
  142.                
  143.     public void setDvalor2( BigDecimal dvalor2 ) {
  144.    
  145.         this.dvalor2 = dvalor2;
  146.     }
  147.  
  148.  
  149.  
  150.                
  151.     public String getDestado() {
  152.    
  153.         return destado;
  154.     }
  155.  
  156.  
  157.  
  158.                
  159.     public void setDestado( String destado ) {
  160.    
  161.         this.destado = destado;
  162.     }
  163.  
  164.  
  165.  
  166.                
  167.     public String getOrdqty() {
  168.    
  169.         return ordqty;
  170.     }
  171.  
  172.  
  173.  
  174.                
  175.     public void setOrdqty( String ordqty ) {
  176.    
  177.         this.ordqty = ordqty;
  178.     }
  179.  
  180.  
  181.  
  182.                
  183.     public BigDecimal getDtot() {
  184.    
  185.         return dtot;
  186.     }
  187.  
  188.  
  189.  
  190.                
  191.     public void setDtot( BigDecimal dtot ) {
  192.    
  193.         this.dtot = dtot;
  194.     }
  195.  
  196.  
  197.  
  198.                
  199.     public String getDref2() {
  200.    
  201.         return dref2;
  202.     }
  203.  
  204.  
  205.  
  206.                
  207.     public void setDref2( String dref2 ) {
  208.    
  209.         this.dref2 = dref2;
  210.     }
  211.  
  212.  
  213.  
  214.                
  215.     public String getDref3() {
  216.    
  217.         return dref3;
  218.     }
  219.  
  220.  
  221.  
  222.                
  223.     public void setDref3( String dref3 ) {
  224.    
  225.         this.dref3 = dref3;
  226.     }
  227.  
  228.  
  229.  
  230.                
  231.     public String getDcom() {
  232.    
  233.         return dcom;
  234.     }
  235.  
  236.  
  237.  
  238.                
  239.     public void setDcom( String dcom ) {
  240.    
  241.         this.dcom = dcom;
  242.     }
  243.  
  244.  
  245.  
  246.                
  247.     public Date getDfecha() {
  248.    
  249.         return dfecha;
  250.     }
  251.  
  252.  
  253.  
  254.                
  255.     public void setDfecha( Date dfecha ) {
  256.    
  257.         this.dfecha = dfecha;
  258.     }
  259.  
  260.  
  261.  
  262.                
  263.     public BigDecimal getDfechareal() {
  264.    
  265.         return dfechareal;
  266.     }
  267.  
  268.  
  269.  
  270.                
  271.     public void setDfechareal( BigDecimal dfechareal ) {
  272.    
  273.         this.dfechareal = dfechareal;
  274.     }
  275.  
  276.  
  277.  
  278.                
  279.     public String getDflag_Dbcr() {
  280.    
  281.         return dflag_Dbcr;
  282.     }
  283.  
  284.  
  285.  
  286.                
  287.     public void setDflag_Dbcr( String dflag_Dbcr ) {
  288.    
  289.         this.dflag_Dbcr = dflag_Dbcr;
  290.     }
  291.  
  292.  
  293.  
  294.                
  295.     public String getDsrvcurrency() {
  296.    
  297.         return dsrvcurrency;
  298.     }
  299.  
  300.  
  301.  
  302.                
  303.     public void setDsrvcurrency( String dsrvcurrency ) {
  304.    
  305.         this.dsrvcurrency = dsrvcurrency;
  306.     }
  307.  
  308.  
  309.  
  310.                
  311.     public String getDpagcurrency() {
  312.    
  313.         return dpagcurrency;
  314.     }
  315.  
  316.  
  317.  
  318.                
  319.     public void setDpagcurrency( String dpagcurrency ) {
  320.    
  321.         this.dpagcurrency = dpagcurrency;
  322.     }
  323.  
  324.  
  325.  
  326.                
  327.     public BigDecimal getDvaltrm() {
  328.    
  329.         return dvaltrm;
  330.     }
  331.  
  332.  
  333.  
  334.                
  335.     public void setDvaltrm( BigDecimal dvaltrm ) {
  336.    
  337.         this.dvaltrm = dvaltrm;
  338.     }
  339.  
  340.  
  341.  
  342.                
  343.     public BigDecimal getDconsecutivo() {
  344.    
  345.         return dconsecutivo;
  346.     }
  347.  
  348.  
  349.  
  350.                
  351.     public void setDconsecutivo( BigDecimal dconsecutivo ) {
  352.    
  353.         this.dconsecutivo = dconsecutivo;
  354.     }
  355.  
  356.     public int hashCode() {
  357.         int hash = 0;
  358.         hash += (ety != null ? ety.hashCode() : 0);
  359.  
  360.  
  361.         return hash;
  362.  
  363.  
  364.     }
  365.  
  366.     @Override
  367.     public boolean equals(Object object) {
  368.         // TODO: Warning - this method won't work in the case the id fields are not set
  369.         if (!(object instanceof Tabla2)) {
  370.             return false;
  371.  
  372.  
  373.         }
  374.         Tabla1 other = (Tabla2) object;
  375.  
  376.  
  377.         if ((this.ety == null && other.ety != null) || (this.ety != null && !this.ety.equals(other.ety))) {
  378.             return false;
  379.  
  380.  
  381.         }
  382.         return true;
  383.  
  384.  
  385.     }
  386.  
  387.     @Override
  388.     public String toString() {
  389.         return "co.com.avisor.Hibernate.Mapping.Tabla2[ety=" + ety + "]";
  390.  
  391.     }
  392. }

Mapeo de la Entidad

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  3. <hibernate-mapping>
  4.   <class name="co.modelo.hibernate.pojos.TabOrder" table="TABORDER">
  5.     <id column="etyCode" name="etyCode" type="string" unsaved-value="-1">
  6.         <!--No existe generadores -->
  7.     </id>
  8.    
  9.     <property column="ordid" name="ordid" not-null="true" type="string" unique="false"/>
  10.     <property column="perid" name="perid" not-null="true" type="string" unique="false"/>
  11.     <property column="servicio" name="servicio" not-null="true" type="string" unique="false"/>
  12.     <property column="dvalor" name="dvalor" not-null="true" type="big_decimal" unique="false"/>
  13.     <property column="dvalor2" name="dvalor2" not-null="true" type="big_decimal" unique="false"/>
  14.     <property column="destado" name="destado" not-null="true" type="string" unique="false"/>
  15.     <property column="ordqty" name="ordqty" not-null="true" type="string" unique="false"/>
  16.     <property column="dtot" name="dtot" not-null="true" type="big_decimal" unique="false"/>
  17.     <property column="dref2" name="dref2" not-null="true" type="string" unique="false"/>
  18.     <property column="dref3" name="dref3" not-null="true" type="string" unique="false"/>
  19.     <property column="dcom" name="dcom" not-null="true" type="string" unique="false"/>
  20.     <property column="dfecha" name="dfecha" not-null="true" type="date" unique="false"/>
  21.     <property column="dfechareal" name="dfechareal" not-null="true" type="big_decimal" unique="false"/>
  22.     <property column="dflag_Dbcr" name="dflag_Dbcr" not-null="true" type="string" unique="false"/>
  23.     <property column="dsrvcurrency" name="dsrvcurrency" not-null="true" type="string" unique="false"/>
  24.     <property column="dpagcurrency" name="dpagcurrency" not-null="true" type="string" unique="false"/>
  25.     <property column="dvaltrm" name="dvaltrm" not-null="true" type="big_decimal" unique="false"/>
  26.     <property column="dconsecutivo" name="dconsecutivo" not-null="true" type="big_decimal" unique="false"/>
  27.   </class>
  28. </hibernate-mapping>

Archivo de configuracion

  1. <?xml version='1.0' encoding='utf-8'?>
  2. <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  3. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
  4.  
  5. <hibernate-configuration>
  6.         <session-factory>
  7.                 <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
  8.                 <property name="connection.url">jdbc:oracle:thin:@111.111.111.111:1521:xe</property>
  9.                 <property name="connection.username">usuario</property>
  10.                 <property name="connection.password">admin</property>
  11.                 <property name="connection.pool_size">1</property>
  12.                 <!-- <property name="dialect">org.hibernate.dialect.OracleDialect</property> -->
  13.                 <property name="dialect">org.hibernate.dialect.OracleDialect</property>
  14.                 <property name="current_session_context_class">thread</property>
  15.                 <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
  16.                 <property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>
  17.                 <property name="show_sql">true</property>
  18.                 <property name="hbm2ddl.auto">validate</property>
  19.                 <!-- <mapping resource="co/modelo/hibernate/pojos/Prueba2.hbm.xml"/> -->
  20.                 <!-- <mapping resource="co/modelo/hibernate/pojos/Prueba.hbm.xml"/> -->
  21.                 <!-- <mapping resource="co/modelo/hibernate/pojos/Prueba3.hbm.xml"/> -->
  22.                 <mapping resource="co/modelo/hibernate/pojos/Tabla1.hbm.xml"/>
  23.                 <mapping resource="co/modelo/hibernate/pojos/Tabla2.hbm.xml"/>
  24.                
  25.         </session-factory>
  26. </hibernate-configuration>
Imagen de neko069

Prueba

Ya probaste hacer algo en HQL sencillo del estilo:

select t1,t2 from Tabla1 t1, Tabla2 t2

Así sin condiciones?

Imagen de DragonNegro

Prueba no funciona

Realice la prueba con la siguiente sentencia

Desde un cliente sql se ejecuta en la base de datos de la siguiente manera:

SELECT tx.*, o.* FROM co.modelo.Hibernate.pojos.Tabla1 tx, co.modelo.Hibernate.pojos.Tabla2

Si funciona desde el cliente Oracle
y

SELECT tx, o FROM prueba.Tabla1 tx, co.modelo.Hibernate.pojos.Tabla2

No funciona desde el cliente Oracle

Por ende ejecuto la siguiente sentencia desde el programa:

SELECT tx.*, o.* FROM co.modelo.Hibernate.pojos.Tabla1 tx, co.modelo.Hibernate.pojos.Tabla2

Y sigue presentando el error.

Imagen de neko069

:-S

Lo que yo no entiendo, es porqué usas los nombres calificados de las clases, para ejecutar consultas sobre tablas, en Oracle.
Lo que tú tienes como:

SELECT bla,bla FROM co.modelo.Hibernate.pojos.Tabla1 tx, co.modelo.Hibernate.pojos.Tabla2

Según tú mapeo de Hibernate el reflejo en SQL, debería de ser:

SELECT * FROM TABLA1,TABLA2

en HQL sería algo como:

select t1,t2 from Tabla1 t1,Tabla2 t2 //o algo más o menos parecido, el punto es, que en NINGUN caso usas el nombre calificado de una clase

Por éso preguntaba al principio si corre tu sentencia, porque se no me cae que uses nombres calificados de clase en un navegador de base de datos :-S
Deberías de estandarizar tu sentencia, si la vas a aplicar en SQL, pues sólo usa SQL con toda la bola de atributos que enumeraste al principio, si lo haces con Hibernate, asegúrate que tus entidades esten correctamente mapeadas y sólo usa notación de objetos como dice la documentación.

Imagen de DragonNegro

Solucionado.

Sí usted tiene toda la razón la sentencia que estaba ejecutando con el nombre de las clases calificadas no me funcionaba en hibernate, pues aunque no es una justificación, pero soy totalmente novato en el tema, pensé que las entidades en la sentencia se debia colocar con los nombres de la clases calificadas dentro del código en hibernate y cuando lo corria en el cliente sql le quitaba toda la ruta de las clases por ende siempre me funcionaba en el cliente.

Creo que este fue un error muy ingenuo de mi parte.

Por ende aclaro que la sentencia que se encuentra a continuación es la incorrecta:

SELECT bla,bla FROM co.modelo.Hibernate.pojos.Tabla1 tx, co.modelo.Hibernate.pojos.Tabla2 o

Queda totalmente claro que jamás en una sentencia en hibernate se deben dejar las entidades con sus clases calificadas sino se deben dejar solamente el nombre de los objetos. Se muestra a continuación el query que funciono correctamente:

SELECT bla,bla FROM Tabla1 tx, Tabla2 o

Gracias por su colaboración.