1

根据以下代码,我有一个用一对一映射的实体:

@Entity
@Table(name = "my_entity")
public class MyEntity
{
    ...
    @OneToOne
    @JoinColumn(name = "site_id")
    private Site site;
    ...
}

我刚刚被告知我必须开始存储 MyEntity 条目,其值为“site_id”,该值可能不存在于 Site 表中。我仍然需要存储“site_id”的值,但它与站点实体不匹配。

我唯一能想到的是创建第二类实体映射到同一个表,而不是在站点表上映射一对一/连接。

有没有办法在不为同一张表创建第二个映射对象的情况下做到这一点?

谢谢,保罗。

4

1 回答 1

3

这是非常糟糕的设计。外键应该是外键,并且不应该指向不存在的行。我会修复数据/设计。

如果你真的不能,请使用此处描述的 NotFound 注释:

默认情况下,当 Hibernate 无法解析关联时,因为预期的关联元素不在数据库中(关联列上的 id 错误),Hibernate 会引发异常。这对于遗留和维护不善的模式可能不方便。您可以要求 Hibernate 忽略这些元素,而不是使用 @NotFound 注释引发异常。此注释可用于@OneToOne(带 FK)、@ManyToOne、@OneToMany 或 @ManyToMany 关联。

于 2011-03-08T11:36:15.233 回答