【问题标题】:JPA: Differences between JQL and SQLJPA:JQL 和 SQL 的区别
【发布时间】:2011-05-20 06:22:27
【问题描述】:

我只需要一个非常具体的问题的答案:

例如:

Customer c =(Customer) manager.createQuery("SELECT c FROM Customer c").getResultList().get(0);

由于使用了 Java 持久性查询语言,此代码有效。

Customer c = (Customer) manager.createNativeQuery("SELECT * FROM Customer LIMIT 1").getSingleResult();

使用类似的代码和原生查询转换为 Customer 将不起作用,ClassCastException 将被引发。

这就引出了一个问题: 是否可以使用 SQL 创建对象作为本机查询的结果

【问题讨论】:

    标签: java sql database jpa jql


    【解决方案1】:

    我想你可以,看看 documentation 的 createNativeQuery(有 2 个参数的那个;我的链接有问题)

    只需将您想要的类传递给 createNativeQuery 调用....

    【讨论】:

      【解决方案2】:

      我显然没见过那个。这似乎比学习 JQL 方便得多。

      但还有另一个问题可能是一个潜在的陷阱:在某些情况下,您需要以大写字母输入字段名称。

      我不能确定,但​​你可能是 遇到区分大小写的问题 这在使用时很常见 本机查询。 JPA 默认字段 大写的名字,如果你是 使用可能返回的数据库 字段名小写,因为 Java 字符串比较区分大小写 可能找不到该字段。这 将导致结果集返回 查找值时为 null “身份证”。

      引自Oracle Forums - primary key detected to be null, but it isn't

      感谢您的快速回答。

      【讨论】:

      • 您应该将此作为一个单独的问题提出。
      • 这不是一个问题,只是一个附加信息,因为一旦我解决了一个问题,我就会遇到下一个问题......无论如何
      猜你喜欢
      • 2017-01-30
      • 1970-01-01
      • 2012-07-02
      • 2022-01-12
      • 2011-05-05
      • 2018-05-10
      • 2012-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多