gpt4 book ai didi

java - 需要 Hibernate 中主键 @OneToOne 映射的示例

转载 作者:搜寻专家 更新时间:2023-10-31 19:51:23 25 4
gpt4 key购买 nike

有人可以给我一个 Hibernate 中单向@OneToOne 主键映射的例子吗?我尝试了多种组合,到目前为止,我得到的最好的结果是:

@Entity
@Table(name = "paper_cheque_stop_metadata")
@org.hibernate.annotations.Entity(mutable = false)
public class PaperChequeStopMetadata implements Serializable, SecurityEventAware {

private static final long serialVersionUID = 1L;

@Id
@JoinColumn(name = "paper_cheque_id")
@OneToOne(cascade = {}, fetch = FetchType.EAGER, optional = false, targetEntity = PaperCheque.class)
private PaperCheque paperCheque;
}

每当 Hibernate 尝试为上述映射自动生成模式时,它会尝试将主键创建为 blob,而不是 long,这是 PaperCheque 的 id 类型。有人能帮帮我吗 ?如果我无法获得确切的解决方案,可以使用接近的解决方案,但我将不胜感激。

最佳答案

我保存了 this discussion当我实现几个@OneToOne 映射时,我希望它也对你有用,但我们不让 Hibernate 为我们创建数据库。

注意 GenericGenerator 注释。

无论如何,我有这段代码可以工作:

@Entity
@Table(name = "message")
public class Message implements java.io.Serializable
{
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@PrimaryKeyJoinColumn(name = "id", referencedColumnName = "message_id")
public MessageContent getMessageContent()
{
return messageContent;
}
}

@Entity
@Table(name = "message_content")
@GenericGenerator(name = "MessageContent", strategy = "foreign",
parameters =
{
@org.hibernate.annotations.Parameter
(
name = "property", value = "message"
)
}
)
public class MessageContent implements java.io.Serializable
{
@Id
@Column(name = "message_id", unique = true, nullable = false)
// See http://forum.hibernate.org/viewtopic.php?p=2381079
@GeneratedValue(generator = "MessageContent")
public Integer getMessageId()
{
return this.messageId;
}
}

关于java - 需要 Hibernate 中主键 @OneToOne 映射的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/314578/

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