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

Hibernate:没有定义查询(没有实体类)

贺靖
2023-03-14

有一些相关的问题,比如:

    null
FUNCTION mySchema.MyPackage.getTestFunction(pParam1 VARCHAR2, pParam2 DATE) RETURN SYS_REFCURSOR AS
    result SYS_REFCURSOR; 
BEGIN
    OPEN result FOR
        SELECT 123 AS "ID", 'abc' AS "VALUE" FROM DUAL 
        UNION ALL
        SELECT 456 AS "ID", 'def' AS "VALUE" FROM DUAL 
        UNION ALL
        SELECT 789 AS "ID", 'ghi' AS "VALUE" FROM DUAL; 
    RETURN result; 
END getTestFunction;
public class ResultPOJO {
    private String ID;
    private String VALUE;
}

我的存储库

@Transactional
@Repository
@SqlResultSetMapping(
    name = "testmapping",
    classes = {
            @ConstructorResult(
                    targetClass = ResultPOJO.class,
                    columns = {
                            @ColumnResult(name = "ID"),
                            @ColumnResult(name = "VALUE")
                    }
            )
    }
)
@NamedNativeQuery(
    name = "getTestFunction", 
    callable = true, 
    query = "{? = call mySchema.MyPackage.getTestFunction(?,?)}",
    resultSetMapping = "testmapping"
    )
public class TestDao {
    public List<ResultPOJO> getValues(String pParam1, LocalDate pParam2) {
        TypedQuery<ResultPOJO> q = entityManager.createNamedQuery("getTestFunction",ResultPOJO.class);
        q.setParameter(0, pParam1);
        q.setParameter(1, pParam2);     
        return q.getResultList();       
    }   
}

我错过了什么?

共有1个答案

申自明
2023-03-14

JPA注释只对实体有效,我也认为对package-info.java文件有效,但有些注释只能应用于类,因此可能需要一种“虚拟实体”。您可以定义如下内容:

@Entity
@Subselect("select 1 as id from dual")
public class Dual {
  @Id
  Integer id;
}

然后可以在该类上定义@namednativeQuery。不过请注意,您需要在Spring项目中为将该类放入的包启用实体扫描。

 类似资料:
  • 有没有办法在没有显式连接的实体上编写条件查询?通过显式连接,我的意思是数据库中的两个表没有外键关系,但一些列需要从两个表中提取,因此在查询中需要连接。我知道具有join的查询可以用‘In’子句编写,而条件查询可以用‘In’条件编写。我已经写了这种情况下的HQL,但请告诉我如何编写这种情况下的标准查询。 先谢谢了

  • 谁能告诉我,如何创建一个没有主键的实体? 谢了。

  • 我正在使用Spring Boot 1.5.10和Spring Boot starter数据jpa。我有一个暂存表和一个生产表,它们都有相同的结构,只是表名不同。列包括: 复合键1 复合键2 复合键3 列A 列B c列 我收到以下错误: 原因:org.hibernate.注释异常:没有为实体指定标识符:com.foo.bar.StagingTbl 我有一个复合主键,类定义为: 我的具体类: 标识符应

  • 我需要在我现有的Spring Boot 1.2.5应用程序中编写一些临时代码来执行一些复杂的SQL查询。所谓复杂,我指的是关于4个不同表的单个查询,我有很多这样的表。我们都决定使用现有的SQL来降低新查询出错的潜在风险,在这种情况下,这是一个很好的方法。 我的应用程序使用JPA / Hibernate并将一些实体映射到表。从我的研究来看,似乎我必须做很多实体映射。 我尝试编写一个类,该类只获取Hi

  • 我正在使用Hibernate恩维尔斯来审计实体。有可能获得实体的所有版本/修订版,如下所示: 但这需要花费太多时间,因为它将所有表连接在一起(在此示例中为 rev、soup_aud ingredients_aud)。我只需要Soup_AUD的值。 如何使用自定义查询从审计表中选择值? 汤.java: 成分.java:

  • 问题内容: 我有一个具有以下结构的数据库: 当我尝试创建EntityProperty类时 我得到以下异常: 我知道JPA实体必须具有主键,但是由于无法控制的原因,我无法更改数据库架构。是否可以创建将与这样的数据库模式一起工作的JPA(hibernate)实体? 问题答案: 我猜您有一个组合键,其中的外键是。如果是这样,则可以按如下所示进行映射: