gpt4 book ai didi

java - 如何使用 Hibernate 将多个多对一关系映射到同一个表和同一个键?

转载 作者:太空宇宙 更新时间:2023-11-04 13:17:16 26 4
gpt4 key购买 nike

我有两个这样的类(class):

public class Message implements Serializable {
...
private int _messageId;
private String _message;
private String type;
...

还有

public class MyClass implements Serializable {
private final int myClassId;
...
private final List<Message> messagesOfTypeA;
private final List<Message> messagesOfTypeB;
private final List<Message> messagesOfTypeC;
...

我想使用 hibernate 来保留这两个类。字段 messagesOfTypeA、messagesOfTypeB 和 messagesOfTypeC 根据 Message 中的类型字段对 Message 对象进行分组。

如何使用 XML hibernate 映射来映射 MyClass 和 Message 之间的一对多关系? (我使用的是 Hibernate 3.6)

最佳答案

我的类(class)

<hibernate-mapping>
<class name="MyClass" table="my_class">
<id name="myClassId" column="id">
<generator class="native"/>
</id>
<list name="messagesOfTypeA" cascade="all" fetch="join">
<key column="myclass_id"/>
<list-index column="idx"/>
<one-to-many class ="Message"/>
</list>
<list name="messagesOfTypeB" cascade="all" fetch="join">
<key column="myclass_id"/>
<list-index column="idx"/>
<one-to-many class ="Message"/>
</list>
<list name="messagesOfTypeC" cascade="all" fetch="join">
<key column="myclass_id"/>
<list-index column="idx"/>
<one-to-many class ="Message"/>
</list>
</class>
</hibernate-mapping>

留言

<hibernate-mapping>
<class name="Message" table="message">
<id name="_messageId" column="id">
<generator class="native"/>
</id>
<property name="_message" column="message"/>
<property name="type"/>
</class>
</hibernate-mapping>

您最终会得到一张表消息,其中包含类型判别式和一个 FK到 MY_CLASS 表。

 CREATE TABLE "MESSAGE" 
( "ID" NUMBER(10,0) NOT NULL ENABLE,
"MESSAGE" VARCHAR2(255 CHAR),
"TYPE" VARCHAR2(255 CHAR),
"MYCLASS_ID" NUMBER(10,0),
"IDX" NUMBER(10,0),
PRIMARY KEY ("ID")

CONSTRAINT "FK_MY_CLASS" FOREIGN KEY ("MYCLASS_ID")
REFERENCES "MY_CLASS" ("ID") ENABLE
)

关于java - 如何使用 Hibernate 将多个多对一关系映射到同一个表和同一个键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33440988/

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