composite-id, HQL => exception
Quand je lance la requête suivante, j'obtiens une QueryException :
Code:
FROM dto.Price AS price WHERE price.company.id=1234 AND price.company.saleoffice.id=1
Exception in thread "main" org.hibernate.QueryException: could not resolve property: company.id of: dto.Price [FROM dto.Price AS price WHERE price.company.id=1234 AND price.company.saleoffice.id=1]
En revanche, cette requête équivalente fonctionne correctement :
Code:
FROM dto.Price AS price JOIN price.company as company WHERE company.id=1234 AND company.saleOffice.id=1
Son seul désavantage est qu'elle génère une jointure pour recuperer des donnees qui ne me servent pas (ma table price contient deja les champs company_id et sale_office_id)
Voila les mappings de Price et Company :
Price
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <class name="dto.Price" table="price">
<composite-id>
<key-property name="productCode" column="product_code"/>
<key-property name="companyId" column="company_id"/>
<key-property name="saleOfficeId" column="sale_office_id"/>
</composite-id>
<many-to-one name="product" class="dto.Product" insert="false" update="false">
<column name="product_code"/>
<column name="sale_office_id"/>
</many-to-one>
<many-to-one name="company" class="dto.Company" insert="false" update="false">
<column name="company_id"/>
<column name="sale_office_id"/>
</many-to-one>
blablabla...
</class> |
Company
Code:
1 2 3 4 5 6 7 8
| <class name="dto.Company" table="company">
<cache usage="read-write"/>
<composite-id>
<key-property name="id" column="id"/>
<key-many-to-one name="saleOffice" class="dto.SaleOffice" column="sale_office_id"/>
</composite-id>
blabla...
</class> |
Quelqu'un comprend ce qui se passe ? une idée ?