V HQL funguje takove odkazovani na sloupce z joinovatelnych trid
(tabulek) funguje.
Ale v Criteria API musi ten join provest explicitne volanim metody
.createCriteria
List cats = sess.createCriteria(PriceListItem.class)
.createCriteria("article")
.add( Restrictions.eq("article.logicGroup", Long.valueOf(logicGroup)))
.list();
Lukas
Petr Burdik napsal(a):
Ahojte,
mam aktualne problem se kterym si nevim moc rady.
Popis problemu
--------------
Mam dve tridy. Article (zbozi) a pricelistitem (jeden radek
generovaneho ceniku). Pristupuji pres hibernate criteria nasledujicim
zpusobem:
query.add(Restrictions.eq("article.logicGroup",
Long.valueOf(logicGroup)));
Vyhodi hlasku
-------------
2007-04-19 07:15:42,600 ERROR
[net.itsynapse2.ecomerce.data.PriceListDAO] - <pocet vektoru
[getPriceListItemsByParameters]: 1>
2007-04-19 07:15:44,649 ERROR
[net.itsynapse2.ecomerce.data.PriceListDAO] -
<getPriceListItemsByParameters[]could not resolve property:
article.logicGroup of:
net.itsynapse2.ecomerce.entity.priceList.PriceListItem>
org.hibernate.QueryException: could not resolve property:
article.logicGroup of:
net.itsynapse2.ecomerce.entity.priceList.PriceListItem
PriceListItem ma jednu property article ve ktere je reference na
objekt article. V jinych situacich mi to funguje bez problemove. Mate
prosim nekdo napad co s tim?
Jsou ve dvou ruznych packages a tedy mam dva mapovaci soubory ( dam
sem zkracene):
-------------------------------------------------------------
<hibernate-mapping
package="net.itbridge.itsynapse2.ecomerce.entity.article">
<class name="Article" table="ecomerce_article">
<id name="oid" column="aoid" type="long"><generator
class="increment"/></id>
<property name="artIdSupplier" type="string"/>
<property name="name" type="string"/>
<property name="priceGroup" type="long"/>
<property name="logicGroup" type="long"/>
</class>
</hibernate-mapping>
<hibernate-mapping package="net.itsynapse2.ecomerce.entity.priceList">
<class name="PriceListItem" table="ecomerce_priceList_items" >
<id name="itemId" column="itemId" type="long"><generator
class="increment"/></id>
<many-to-one name="priceList"
class="net.itsynapse2.ecomerce.entity.priceList.PriceList"
cascade="none" outer-join="true" fetch="join"
update="true" insert="true" column="ploid" />
<many-to-one name="article"
class="net.itbridge.itsynapse2.ecomerce.entity.article.Article"
cascade="none" outer-join="true" fetch="join"
update="true" insert="true" column="aoid" />
</class>
</hibernate-mapping>
Mate prosim nejaky napad cim to muze byt? Laboruju s tim uz tri
hodiny. Takoveto dotazy jinak normalne tvorim.
Pet
--Using Opera's revolutionary e-mail client: http://www.opera.com/mail/