jpa 无法确定如何使用hibenvers审计非拥有实体中的空值

l3zydbqr  于 2022-11-14  发布在  其他
关注(0)|答案(1)|浏览(113)

我 的 项目 有 :

  1. rsqlParser 以 解析 复杂 的 查询
    1.出于 审核 目的 而 休眠 环境
    1.不 知道 如何 实现 isNull rsql 查询 的 相当 愚蠢 的 中级 开发 人员
    我 有 两 个 具有 严格 一 对 一 关系 的 Object :包含 对象 B 的 对象 A 和 包含 对象 A 的 对象 B 。 在 RDS 中 , 对象 B 似乎 具有 object _ a _ id 字段
    Object _ A 实体 类
@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 subselect , 但 不 知道 如何 编写 它 。

nmpmafwu

nmpmafwu1#

您可能应该在问题跟踪器(https://hibernate.atlassian.net)中创建一个问题,并使用一个测试用例(https://github.com/hibernate/hibernate-test-case-templates/blob/master/orm/hibernate-orm-5/src/test/java/org/hibernate/bugs/JPAUnitTestCase.java)来显示此限制,并要求对此进行改进。
通常,在ORM中,这是通过引入exists子查询在SQL级别处理的,如下所示:
where not exists (select 1 from object_b b where b.object_a_id = rootAlias.id)
不确定在您的情况下这是如何工作的,但是您可以尝试在查询中做类似的事情。

相关问题