gpt4 book ai didi

hibernate :外键是主键

转载 作者:行者123 更新时间:2023-12-03 08:10:40 24 4
gpt4 key购买 nike

我有 2 个表的一对一关系:

**message**(id, name, content)

**scheduled_message**(message_id, start_time, stop_time)

我使用 message_id 作为 scheduled_message 表的主键。

我的领域类:

public class Message {

private Integer id;
private String name;
private String content;
...
}

public class ScheduledMessage {
private Message message;
private Date startTime;
private Date stopTime;
}

我尝试编写 hibernate xml 配置来映射 2 个类,但 message_id 仍然出错 :(

<class name="Message" table="message">
<id name="id" column="id">
<generator class="native" />
</id>
<property name="name" column="name" />
<property name="content" column="content" />
</class>

<class name="ScheduledMessage" table="scheduled_message">
<id name="message" column="message_id">
<generator class="foreign">
<param name="property">message</param>
</generator>
</id>
<property name="startTime" column="start_time" />
<property name="stopTime" column="stop_time" />
<one-to-one name="message" constrained="true"/>
</class>

错误:无法确定类型:cbs.domain.Message,表:scheduled_message,列:[org.hibernate.mapping.Column(message_id)]

请帮帮我

谢谢

最佳答案

您可以用不同的方式来看待这里的内容。与其让 ScheduledMessage 公开一个 Message 属性,不如看看 ScheduledMessage 是一种特殊类型的 Message - 换句话说,一个子类。 Hibernate 允许您以多种方式映射这样的继承关系——您在这里所拥有的称为“每个子类的表”。如果您阅读 section of the Hibernate documentation on this sort of mapping ,它应该让一切都清楚,并为您提供足够的示例代码来帮助您启动和运行。

或者,为了坚持您当前的方法,您可以将 ScheduledMessage 的 ID 映射为 composite id但只有一个组件。

关于 hibernate :外键是主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2116455/

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