Я хочу сделать что-то подобное в моем объекте домена / сущности:
@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
Чтобы на моем уровне обслуживания я мог сделать это:
Query query = session.getNamedQuery("favouriteCats")
query.setParameter(0, MyUser);
return query.list();
Однако мой синтаксисв HQL неверно - и после десяти минут просмотра официальных документов я решил сдаться и спросить здесь ...?Моя таблица usercat соединена так:
@ManyToOne(cascade = CascadeType.MERGE)
@JoinColumn(name="cat_fk", insertable=false, updatable=false)
private cat
sql, это нормально работает в командной строке моей базы данных:
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
Это только у меняили документация hibernate довольно болезненна, и вы часто задаетесь вопросом, не будет ли быстрее просто написать обычные подготовленные jdbc операторы для заполнения ваших pojos / domain объектов / dto's ...?