表关系如下:
我想选择地址类型设置为1的18岁以上的所有用户。存在用户和地址实体的Hibernate映射,但在用户到地址的映射中没有定义关联。用户和地址之间的唯一链接是通过user_address_associations表指定的。此外,User类未定义Addresses属性。
原始SQL将是:
select * from users
inner join user_address_associations
on user_address_associations.userid=users.identity
inner join addresses
on user_address_associations.addressid=addresses.identity and addresses.type=1
where db.users.age >= 18
使用Hibernate 3.6.5 Criteria API,我从这开始:
Criteria criteria = session.createCriteria(User.class);
// how to do the join to addresses table through user_address_associations table?
// where clause
criteria.add(Restrictions.gt("Age", 1176));
问题是,我如何制定联接?
答案 0 :(得分:2)
这是不可能的。 Hibernate查询(HQL或Criteria)仅使用实体,它们的持久字段及其关联。如果连接表未映射且未用于定义用户和地址实体之间的关联,则无法使用此表与Hibernate定义查询,当然除了SQL查询。