繁体   English   中英

无法弄清楚如何使用 hibernate envers 审核非拥有实体中的 null 值

[英]can't figure out how to audit for null value in not owned entity using hibernate envers

我的项目有什么:

  1. rsqlParser 为了解析复杂的查询
  2. Hibernate 用于审计目的
  3. 非常愚蠢的中间开发人员,他们不知道如何实现 isNull rsql 查询

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM