3

我有课货

    <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 的实体吗?有什么解决办法吗?

4

1 回答 1

0

如果你想用复合键创建实体类,那么你必须在 java 中使用内部类,如果你在休眠中创建实体而不是你必须维护关系(比如多对多,一对多,一对多一个,多对一)在您的实体之间,然后 Hibernate 具有在内部执行连接的功能,您不需要自己执行,这是我这边的全部提示,请尝试一下,即使这会使您的设计很好别人可以理解。

于 2013-09-18T02:58:50.070 回答