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