[英]can't figure out how to audit for null value in not owned entity using hibernate envers
我的项目有什么:
I have two Object with strict one-to-one relationship: object A which contains object B, and object B, which contains object A. In RDS it's looks like object B has an object_a_id field
Object_A 实体 class
@Entity
@Getter
@Setter
@Audited
@NoArgsConstructor
public class Object_A {
@OneToOne(mappedBy = "object_a")
private Object_B object_b;
}
Object_B 实体
@Entity
@Getter
@Setter
@Audited
@NoArgsConstructor
public class Object_B {
@OneToOne
@JoinColumn(
name = "object_a_id",
referencedColumnName = "id",
foreignKey = @ForeignKey(name = "object_b_object_a_fk")
)
private Object_A object_a;
很明显,您看到 Object_B OWNS Object_A 并且当我尝试执行一些简单的操作时
return auditProperty.isNull();
我明白了
This type of relation (object_b) isn't supported and can't be used in queries
我想我需要以某种方式进行自定义查询,其中我事先添加了一些 object_b 子选择,但无法弄清楚如何编写它。
您可能应该使用测试用例( https://github.com/hibernate/hibernate-test-case-templates/blob/master/orm/ )在问题跟踪器( https://hibernate.atlassian.net )中创建一个问题hibernate-orm-5/src/test/java/org/hibernate/bugs/JPAUnitTestCase.java )显示此限制并要求对此进行改进。
通常,在 ORM 中,这是在 SQL 级别上通过引入一个exists
子查询来处理的,例如:
where not exists (select 1 from object_b b where b.object_a_id = rootAlias.id)
不确定这在您的情况下是如何工作的,但您可以尝试在查询中执行类似的操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.