hibernate可选连接

时间:2011-03-08 11:03:52

标签: hibernate one-to-one

我有一个按照以下代码映射到一对一的实体:

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

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

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

有没有办法在不为同一个表创建第二个映射对象的情况下执行此操作?

谢谢,保罗。

1 个答案:

答案 0 :(得分:3)

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

如果你真的不能,请使用描述here

的NotFound注释
  

默认情况下,当Hibernate无法解析关联时,因为预期的关联元素不在数据库中(关联列上的ID不正确),Hibernate会引发异常。对于传统和维护不良的架构,这可能不方便。您可以让Hibernate忽略这些元素,而不是使用@NotFound注释引发异常。此注释可用于@OneToOne(使用FK),@ ManyToOne,@ OneToMany或@ManyToMany关联。