Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/10/2010, 06:47
draco23800
 
Fecha de Ingreso: abril-2005
Mensajes: 171
Antigüedad: 19 años
Puntos: 0
busqueda por "composite id"

Buenas, otra vez por aqui dando la vara. Lo primero muchas gracias.

Tengo una tabla con 3 campos que son primary key por lo tanto me ha generado la siguiente estructura de XML y BEAN.

Tabla --> campo1 (pk), campo2 (pk), campo3(pk), campo4, campo5
XML -->
<class name="Table1Bean" table="Tabla">
<composite-id name="IdBean" class="ClaseIdBean">
<key-property name="campo1" type="string">
<column name="CAMPO1" length="20" />
</key-property>
<key-property name="campo2" type="string">
<column name="CAMPO2" length="15" />
</key-property>
<key-property name="campo3" type="string">
<column name="CAMPO3" length="4" />
</key-property>
</composite-id>
<property name="campo4" type="string">
<column name="CAMPO4" length="50" />
</property>
......

BEANS --> TABLA1 --> el refernte al xml

public class Table1Bean implements java.io.Serializable {
/** Objeto de tipo ClaseIdBean que tiene la clave*/
private ClaseIdBeanIdBean;
/** campo1 */
private String campo1;
...

/** Constructor de clase */
public Table1Bean () {
}
getter y setters

Objeto de clave

public class ClaseIdBean implements java.io.Serializable {

/** campo1 */
private String campo1;

/** campo2 */
private String campo2;

/** campo3 */
private String campo3;

/** Constructor de clase */
public ClaseIdBean () {
}
getter y setters


Vale y tras este rollo ¿como puedo hacer una consulta pasandole como filtro la clave?

He probado 2 cosas sin resultado y no se que esta mal.

Lo "bonito" con el objeto
Rellenar el objeto pk (ClaseIdBean) con los datos que quiero hacer de filtro y meterselo al objeto que tengo parseado Table1Bean para luego

Table1Bean = (Table1Bean)session.get(Table1Bean.class, Table1Bean);

Opcion 2 HQL puro y duro

query = session.createQuery(FROM Table1Bean p WHERE p.campo1 = :c1 AND p.campo2 = :c2 AND p.campo3 = :c3);

query.setParameter("c1",Table1Bean.ClaseIdBean().g etCampo1());
......
Table1Bean = (Table1Bean) query.uniqueResult();

El resultado es unico porque vamos por todos los campos de la pk.

Muchas gracias