Quand je lance la requête suivante, j'obtiens une QueryException :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?