12

这行得通吗 -

@OneToOne()
@JoinColumn(name = "id", referencedColumnName = "type_id")
@Where(clause = "type_name = OBJECTIVE")
public NoteEntity getObjectiveNote() {
  return objectiveNote;
}

这就是我想要做的 - 从表中获取记录,该表notetype_id当前id对象的,并且type_nameOBJECTIVE

我无法使上述映射工作。我在这里做错了什么?

4

2 回答 2

8

这简直是​​行不通的,抱歉 :( 您需要以一对多的方式进行操作,并接受包含单个元素的集合。

如果您真的希望它以这种方式工作,您可以通过将外键 ID 和 type_name 存储在连接表中并告诉它两列构成外键来欺骗 hibernate。

于 2010-12-08T00:34:08.707 回答
3

实际上,您可以通过不指定@OneToOne任何@Where,但放置@Where引用的实体类来实现这一点。我在 Hibernate 4.3.11 上对此进行了测试。

如果您不关心任何与您的@Where.

如果您确实关心其他实体,您可能可以创建一个子类实体,穿上@Where它并加入该子类。但我还没有测试过这种情况。

于 2017-10-27T12:14:11.527 回答