【问题标题】:Playframework [Java] Migration from 2.6.6. to 2.7.0 Problems with JPA?Playframework [Java] 从 2.6.6 迁移。到 2.7.0 JPA 的问题?
【发布时间】:2019-02-05 08:11:54
【问题描述】:

此代码适用于 play 2.6.6 和 Hibernate 4.2.3:

int employeeId=1;
String projectId=123;

int projectSize = jpaApi.withTransaction(entityManager -> {
      TypedQuery<Table> query = entityManager.createQuery("FROM Table WHERE employeeId=:employeeId AND projectId=:projectId", Table.class);
      query.setParameter("employeeId", employeeId);
      query.setParameter("projectId", projectId);

      try
      {
        return query.getResultList().size();
      }
      catch (NoResultException e)
      {
        LOGGER.debug("not found");
        return 0;
      }
});

自从我更新到播放 2.7.0 并将 hibernate-dependencies 更新为 5.4.0-Final。这个块给了我一个例外:

异常:找不到models.Table with id 123

这是一个错误吗?还是我做错了什么?

【问题讨论】:

  • 你以前的hibernate版本是什么?
  • Hibernate 4.2.3-Final.
  • 这是一个巨大的休眠更新,您是否遵循迁移指南?你能发布你的休眠配置和表格类吗?
  • 我只想将 play 更新到 2.7.0。休眠更新是强制性的吗?或者选择休眠的最低版本是什么?
  • 我认为你可以保留 4.2.3,但我建议你也努力更新 hibernate。

标签: java hibernate jpa playframework migration


【解决方案1】:

您应该在查询中指定您的选择:

entityManager.createQuery("SELECT t FROM Table t WHERE employeeId=:employeeId AND projectId=:projectId", Table.class);

【讨论】:

  • 不这么认为。为什么这应该在 play 2.6 中起作用??
  • 他是对的,您的 JPQL 完全是特定于供应商的,并且目前对 JPA 规范无效(又名“HQL”......如果不相信,请阅读 JPA 规范)。将其修复为上面指定的内容并不能在这里回答您的问题。
【解决方案2】:

更新到 Hibernate 4.2.8-Final 解决了这些错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 2021-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多