我正在使用 hibernate 在我没有写入权限的数据库上映射一些 Java 类。用作 ClientEpisodes 和 Physician 之间的 FK 的字段之一有 6 行,其中包含代表 FK 的 -1。这显然是一个无效的 FK,但我仍然需要加入并忽略这些医生并拥有一个无效的医生。 我正在使用
加入类(class) @JoinColumn(name = "epi_phid1", referencedColumnName = "ph_id", foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
private Physician physician;
我尝试指定 NO_CONSTRAINT 以查看它是否会忽略它,但即使如此,我仍然收到以下错误:
javax.persistence.EntityNotFoundException: Unable to find private.package.info.Physician with id -1
有没有办法告诉 Hibernate 忽略无效的值,例如 -1?
最佳答案
如果使用模式生成,带有 NO_CONSTRAINT 值的 @ForeignKey 注释告诉 hibernate 不要生成外键。它对 JPA 框架中的内部实体验证没有任何影响。 您可以使用 hibernate 特定的 @NotFound 注释:
@JoinColumn(name = "epi_phid1", referencedColumnName = "ph_id")
@NotFound(action = NotFoundAction.IGNORE)
private Physician physician;
但是请注意,如果您在映射 Collection 的 @OneToMany 或 @ManyToMany 注释中使用它,hibernate 将以 null 填充无效/缺失的实体(因此列表将包含 null 值)。
关于java - Spring Boot 连接两个具有无效 FK 条目的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58018238/