我有一类商品
<class name="Goods">
...
<map name="names" lazy="false" fetch="join">
<key not-null="true" />
<map-key column="LANGUAGE_CODE" type="language" length="2"/>
<composite-element class="Goods$Names">
<property name="name" not-null="true" type="text"/>
<property name="description" type="text"/>
</composite-element>
</map>
...
</class>
当我尝试按名称搜索商品时出现问题:
session.createQuery("select g from Goods g where g.names[:lang].name = 'Some goods name'")
javax.servlet.ServletException: java.lang.IllegalArgumentException: Cannot create element join for a collection of non-entities!
用Hibernate这样做真的不可能吗? 我是否真的需要将商品命名为具有自己ID的实体? 任何解决方案?
答案 0 :(得分:0)
如果你想用复合键创建实体类,那么你必须去java中的内部类,如果你在hibernate中创建实体而不是你必须保持关系(比如你的实体之间有多对多,一对多,一对一,多对一,然后Hibernate具有在内部执行连接的功能,你不需要自己执行,这是我身边的全部提示,请尝试它,即使这使你的设计很好地理解他人。