gpt4 book ai didi

java - 如何查询集合的复合元素? (无法为非实体集合创建元素连接)

转载 作者:行者123 更新时间:2023-12-02 09:39:23 24 4
gpt4 key购买 nike

我有一个类商品

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

最佳答案

如果你想用复合键创建实体类,那么你必须在java中使用内部类,如果你在hibernate中创建实体,那么你必须维护关系(比如实体之间的多对多、一对多、一对一、多对一),然后 Hibernate 具有在内部执行联接的功能,您不需要自己执行该操作,这是我这边的全部提示,请尝试一下,即使这会让你的设计更容易被其他人理解。

关于java - 如何查询集合的复合元素? (无法为非实体集合创建元素连接),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12640249/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com