【问题标题】:Create native SQL query without creating entity class in SpringBoot在 Spring Boot 中创建原生 SQL 查询而不创建实体类
【发布时间】:2018-11-30 01:53:53
【问题描述】:

ORM 的基础是与对象的映射。但是,出于某种原因,我不想创建用于运行查询的对象。

有什么方法可以在不创建实体(托管类)的情况下运行本机 SQL 查询?

【问题讨论】:

标签: sql spring spring-boot orm hibernate-mapping


【解决方案1】:

是的。你可以。

在repository类中创建带有特定查询(本机查询)的方法:

@Query(value="select * from emp", nativeQuery=true)
Object getAllFromEmp();

将此方法保留在存储库接口中并从服务类中调用它

或者您可以使用 EntityManager 对象,如下所示

Query q = entityManager.createNativeQuery("SELECT * FROM emp e");
List<Object[]> empObject= q.getResultList();

【讨论】:

  • 但是,这里我需要一个 'emp' 类并将其作为一个实体,否则,它会抛出错误。我不想创建一个“emp”类(托管类),或者更好地说,我不想将 ORM 用于某些用例。我正在设计报告服务,为此,我不想为每个报告创建类(托管实体)
  • 这里 emp 是表名而不是类名,我们在这里使用的是 native query 而不是 HQL
【解决方案2】:

看看createNativeQuery

...
Query query = em.createNativeQuery("select ...");
...

而且,我认为您可以在此线程中找到更多相关信息:https://stackoverflow.com/a/2110860/672798

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-19
    • 2019-04-13
    • 2020-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多