我有以下结构:
Product.Java:
String name
@OneToMany(mappedBy="product")
private List<ProductServingTimeAvailablity> servingTimeAvailablities;
@OneToMany(mappedBy="product")
private List<ProductStyles> styles;
@OneToMany(mappedBy="product")
private List<ProductLocationAvailability> locationAvailabilites;
我需要检索所有
的产品(意思是 - 每个产品可以有很多时间可用性和许多样式和许多位置,我只需要选择时间1可用的产品,样式2,可用于位置3)
如何在HQL中执行此操作?
它不在但包含。
答案 0 :(得分:1)
以下内容应该有效。
SELECT product FROM Product product
join product.servingTimeAvailablities as servingTimeAvailablities
join product.styles as styles
join product.locationAvailabilites as locationAvailabilites
WHERE servingTimeAvailablities.someProperty = :somePropertyValue1
AND styles.someProperty = :somePropertyValue2
AND locationAvailabilites.someProperty = :somePropertyValue3
我不知道你的对象的内部,这就是我使用'someProperty'作为字段名称的原因。您应该使用要匹配的正确字段名称替换它。我还使用'join'作为示例的连接类型。您应该将其替换为您要使用的连接类型(例如内连接,左外连接等)。
如果这对你有用,请告诉我。我自己没试过:)
帮助我的参考资料是:
http://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/queryhql.html#queryhql-select