简体   繁体   English

JPA审核实体直接查询

[英]JPA Audit entity direct query

I would like to query audit entity in my JPA environment. 我想在我的JPA环境中查询审核实体。

At first I do AuditQuery and it works well, but now I need more advance query witch I can't do with AuditQuery . 一开始我会做AuditQuery ,而且效果很好,但是现在我需要更多无法使用AuditQuery高级查询。

Now I need something like 现在我需要

 this.em.createQuery("FROM ENTITY_AUD").getResultList();

but I get error : 但我得到错误:

 QuerySyntaxException: ENTITY_AUD is not mapped [ENTITY_AUD]

I understand that this is due that I don't have entity with all properties, but I don't want to have entity because it is audit entity. 我知道这是由于我没有具有所有属性的实体,但是我不想拥有实体,因为它是审计实体。

Is there a way around it? 有办法解决吗? For me it would be ok to get List of Object. 对我来说,获取对象列表是可以的。

You can always create native SQL query in JPA. 您始终可以在JPA中创建本机SQL查询。 Replace createQuery with createNativeQuery in your code: 在代码createQuery createNativeQuery替换为createNativeQuery

List<Object[]> list = 
    this.em.createNativeQuery("SELECT * FROM ENTITY_AUD").getResultList();

Add a NamedQuery in your Audit class 在审核类中添加NamedQuery

@Entity
@Table(name = "ENTITY_AUD")
@NamedQueries({
@NamedQuery(name = "Audit.findAll", query = "SELECT a FROM Audit a")})
public class Audit implements Serializable {
         ...
}

then use the named query 然后使用命名查询

List<Audit> auditList = entityManager.createNamedQuery("Audit.findAll").getResultList();

Read : Implementing a JPA Named Query 阅读: 实现JPA命名查询

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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