Quiero hacer algo como esto en mi dominio/entidad objeto :

@Entity
@NamedQueries({
@NamedQuery(name="favouriteCats", query="from Cat c inner join on UserCat uc where uc.isFavourtie = true and uc.user = :user")
})
public final class Cat extends BaseTable

Así que en mi capa de servicio que puedo hacer esto :

Query query = session.getNamedQuery("favouriteCats")
query.setParameter(0, MyUser);
return query.list();

Sin embargo, mi sintaxis en HQL es incorrecta – y aftern diez minutos mirando oficial docs me he decidido a dar y pedir aquí … ?
Mi usercat tabla se unió así :

@ManyToOne(cascade = CascadeType.MERGE)
@JoinColumn(name="cat_fk", insertable=false, updatable=false)
private cat

El sql es esta, funciona bien en mi db símbolo del sistema:

select c.* 
from cat as c inner join usercat as uc on c.id = uc.cat_fk 
and uc.isFavourite = 1 //bit field
and uc.user_fk = 74 //just user id

Es sólo a mí o es la documentación de hibernate bastante doloroso, y te encuentras a menudo se preguntaba si sería más rápido escribir normal jdbc declaraciones preparadas para rellenar su pojos/objetos de dominio/dto de… ?

  • ¿Qué estás tratando de lograr con esta consulta?
  • Pasar el id de usuario, buscar todos los favoritos de los gatos en usercat tabla, que se unió a cat tabla
  • ¿Por qué no usar directamente SQL en lugar de HQL, el método de la sesión.createSQLQuery(consulta);
  • Bueno, sí, supongo que podría, pero hay beneficios de tener una consulta con nombre, o una consulta de criterios. Y esto no debería ser tan difícil de usar hibernate.
InformationsquelleAutor NimChimpsky | 2011-10-27

2 Comentarios

  1. 4

    Creo que esto podría funcionar para usted, pero estoy adivinando su Usercat clase aquí:

    select c from Usercat as uc inner join uc.cat as c where uc.isFavourtie = true and uc.user = :user
    • thnx, ¿qué sería de los criterios equivalentes parece ?
    • No soy consciente de si usted puede hacer eso con Criterios sin una referencia de Gato a Usercat.
    • parecería que no, no hay respuestas aquí, stackoverflow.com/q/7914607/106261 a veces me pregunto whther hibernate es la pena (de ser el aprendizaje de una nueva sintaxis, la instalación de una carga de frascos, etc etc)
  2. 1

    Caso de Problema, a la Derecha de la consulta sería:

    from Cat c inner join on Usercat uc where uc.isfavourtie = true and uc.user = :user

    Nota : C en el Cat es de capital, U en Usercat es capital, donde como c en Usercat es pequeño y f en isfavourite es pequeño.

Dejar respuesta

Please enter your comment!
Please enter your name here