当前位置: 首页 > 知识库问答 >
问题:

Hibernate Envers查询带有自定义查询的审计表

袁志专
2023-03-14

我正在使用Hibernate恩维尔斯来审计实体。有可能获得实体的所有版本/修订版,如下所示:

AuditQuery auditQuery = auditReader.createQuery().forRevisionsOfEntity(
                Soup.class, true, true);
        auditQuery.add(AuditEntity.property("id").eq(id));
        List<Soup> from = auditQuery.getResultList();

但这需要花费太多时间,因为它将所有表连接在一起(在此示例中为 rev、soup_aud ingredients_aud)。我只需要Soup_AUD的值。

如何使用自定义查询从审计表中选择值?

汤.java

@Entity
@Table(name = "SOUP")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Wither
@Audited
public class Soup {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    @OneToMany(cascade = {CascadeType.ALL}, orphanRemoval = true)
    @JoinColumn(name = "INGREDIENT_ID")
    private List<Ingredient> ingredients;

}

成分.java:

@Entity
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Wither
@Audited
public class Ingredient {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

}

共有2个答案

阎佑运
2023-03-14

我现在的解决方案是来自 JPA 存储库的本机查询。

束作人
2023-03-14

我怀疑这种联系发生的原因是由于@OneToMany的本质是关系的拥有方而不是反向方。如果您无法修改映射,那么不幸的是,我认为目前没有办法避免连接。

我可以看到被添加来支持这一点将是

  • 展开遍历修订的相关性问题查询类型
  • 审核查询上提供一个 setFetch 模式方法,该方法镜像其标准 API 对应项。

所有这些都是对Envers的增强;其中的捐款将受到欢迎。第一个元素已经有一个功能请求记录为HHH-13817。我还为后者记录了HHH-3818。

 类似资料:
  • 1. 简介 分析云作为企业进行全域用户行为数据分析的数据中台,需要满足企业不同业务角色的各类差异化分析需求。 其中,对于企业深度结合业务模式的定制化需求,分析云平台提供了“自定义SQL查询”的功能,支持业务人员自行编辑复杂的 SQL 查询语言,实现对平台数据仓库中最底层的细粒度用户行为数据进行分析操作,以获取当前分析云平台既有数据模型无法覆盖的个性化分析需求的结果。 2. 使用说明 当前 sql

  • 我需要一些帮助。我试图创建一个自定义查询我在Wordpress中创建的自定义帖子,并使用Elementor Pro。 在我的帖子中,我添加了一个带有数字值的自定义字段“排序”,我想用它来手动排序帖子。 然而,我似乎无法让它发挥作用。 我正在使用最新的Elementor pro版本。 我试着按照他们页面上的说明:https://developers.elementor.com/custom-quer

  • 1. 简介 分析云作为企业进行全域用户行为数据分析的数据中台,需要满足企业不同业务角色的各类差异化分析需求。 其中,对于企业深度结合业务模式的定制化需求,分析云平台提供了“自定义SQL查询”的功能,支持业务人员自行编辑复杂的 SQL 查询语言,实现对平台数据仓库中最底层的细粒度用户行为数据进行分析操作,以获取当前分析云平台既有数据模型无法覆盖的个性化分析需求的结果。 2. 使用说明 当前 sql

  • 问题内容: 我试图在扩展CrudRepository的存储库中执行一些SQL查询。我在控制器中有以下代码: DAO代码如下: 该类是: 投影为: 我对如何添加查询(诸如此类)感到困惑: 我如何更改投影,还有哪些其他必要的更改? 问题答案: 您可以将DAO更改为下面,这应该可以工作。 } 确保Bean类构造函数应具有传递的参数。 验证查询是否为有效的JPA查询(此处)。

  • 我有一个自定义的文章类型(媒体文章),它使用一些自定义字段,有一个自定义分类法(媒体文章类别)和该分类法中的14个术语。我可以使用CPT归档模板输出所有自定义帖子。 我在侧边栏中还有一个菜单,它列出了用于过滤自定义帖子的术语(我使用了一个自定义WP菜单小部件来创建列表)。 我用一个查询设置了一个自定义分类模板。根据args中放置的分类术语,我能够成功地组合或单独显示帖子。因此,如果我不需要使用过滤