我如何告诉 Hibernate 在 selfjoin @OneToOne 中忽略“0”
How can i tell Hibernate to ignore "0" in a selfjoin @OneToOne
我正在编写一个使用旧数据库的新应用程序。
我有一个名为 "score" 的 Table,看起来像这样:
+-----+------------+--------------------------+
| id | name | sub_score |
+-----+------------+--------------------------+
| 205 | High Score | 206 |
| 206 | Mid Score | 207 |
| 207 | Low Score | 0 |
+-----+------------+--------------------------+
我的模型实体是:
@Entity
@Table(name = "score")
public class ScoreGroups implements Serializable {
private int id;
private String name;
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER, optional = true)
@JoinColumn(name = "haupt_kondition_id")
@NotFound(action = NotFoundAction.IGNORE)
private ScoreGroups sub_Score;
}
所以我正在尝试使用 sub_score 进行自连接映射 ID,但由于遗留数据库反设计,如果分数没有 [=26=,则写入 0 而不是 null ].通过 Hibernate 加载数据产生:
org.hibernate.ObjectNotFoundException: No row with the given identifier exists:
因为 Hibernate 只忽略空值,而不是带有 @NotFound 的 0。
如果在 "sub_score" 中找到 0,如何告诉 Hibernate 忽略内部对象映射?
试试这个
@JoinColumn(name = "haupt_kondition_id")
@Where(clause = "sub_score <> 0")
我正在编写一个使用旧数据库的新应用程序。
我有一个名为 "score" 的 Table,看起来像这样:
+-----+------------+--------------------------+
| id | name | sub_score |
+-----+------------+--------------------------+
| 205 | High Score | 206 |
| 206 | Mid Score | 207 |
| 207 | Low Score | 0 |
+-----+------------+--------------------------+
我的模型实体是:
@Entity
@Table(name = "score")
public class ScoreGroups implements Serializable {
private int id;
private String name;
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER, optional = true)
@JoinColumn(name = "haupt_kondition_id")
@NotFound(action = NotFoundAction.IGNORE)
private ScoreGroups sub_Score;
}
所以我正在尝试使用 sub_score 进行自连接映射 ID,但由于遗留数据库反设计,如果分数没有 [=26=,则写入 0 而不是 null ].通过 Hibernate 加载数据产生:
org.hibernate.ObjectNotFoundException: No row with the given identifier exists:
因为 Hibernate 只忽略空值,而不是带有 @NotFound 的 0。
如果在 "sub_score" 中找到 0,如何告诉 Hibernate 忽略内部对象映射?
试试这个
@JoinColumn(name = "haupt_kondition_id")
@Where(clause = "sub_score <> 0")