【问题标题】:Hibernate - error when running native queryHibernate - 运行本机查询时出错
【发布时间】:2020-10-15 23:33:16
【问题描述】:

我正在尝试使用 createNativeQuery,但似乎当我有一个连接实体时,当我调用 getResultList() 时它会导致 NullPointerException。

entityManager.createNativeQuery("SELECT * FROM table_1 JOIN table_2 ON table_1.id = table_2.table_1_id", Table1.class)
                .getResultList()

【问题讨论】:

  • 你在@JoinColumn(name = "person_id", ...)中提到的person_id在哪里?
  • @f1sh 即appointment表中的列
  • 在 SQL 客户端中运行它的结果是什么?
  • @ScaryWombat 当我在 MySQL 中运行时,查询本身运行良好;它只返回所有约会列和人员列
  • 检查两个字段中的 Id 实际上是数字,而不是 varchar

标签: java sql spring hibernate jpa


【解决方案1】:

尝试在 db 中手动运行查询并检查您可以检索多少条记录,如果查询显示 0 条记录,那么很明显它将返回 null 给实体管理器,因此您将面临此异常。所以你可以在这里使用 try catch 块来处理异常。

【讨论】:

    【解决方案2】:

    您尝试编写类型化查询,但 * 不是约会,而是约会和人员的组合。

    试试

    SELECT a.* FROM appointment a JOIN person ON person.id = a.person_id
    

    这会将 Appointments 限制为 Appointments with Persons 并多次返回,这可能不是您的意图。

    去掉 AppointmentEntiy.class,你会得到一个包含 Appointment 和 Person 字段的 Object[] 列表:

    entityManager.createNativeQuery("SELECT * FROM appointment JOIN person ON person.id = appointment.person_id")
                .getResultList()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-17
      • 1970-01-01
      • 2014-06-19
      • 1970-01-01
      • 2017-12-16
      • 2020-11-19
      • 2019-08-26
      相关资源
      最近更新 更多