【问题标题】:How to use CreateNativeQuery to query single value from SQL database value?如何使用 CreateNativeQuery 从 SQL 数据库值中查询单个值?
【发布时间】:2011-04-06 11:55:57
【问题描述】:

使用 CRUD 并希望访问数据库中的某个值。我尝试的是:

Query query = em.createNativeQuery("select o from Table o where o.IDfield= '938'"); 
Table o = (Table)query.getSingleResult();

但这失败了。

有什么建议吗?

【问题讨论】:

    标签: java sql database nativequery


    【解决方案1】:

    您的选择看起来像一个 jpql 查询,因此当作为本机查询直接传递到数据库时它将不起作用。您可以改用createQuery 方法。更好的是使用在您的实体上声明的命名参数化查询,如下所示:

    @Entity
    @NamedQueries({@NamedQuery(name="MyEntity.findById", query="select o from MyEntity o where o.IDfield = :id"})
    public class MyEntity {
        @Id
        private String IDfield;
    }
    
    ...
    
    MyEntity entity = (MyEntity)em.createNamedQuery("MyEntity.findById").setParameter("id", "938").getSingleResult();
    

    【讨论】:

    • 另外谢谢,我不知道如何在命名查询中设置参数。使用namedQuery是否优先只是整洁和可重用性问题?
    • Jan Gvdp:命名查询的另一个原因是它们在部署时会检查语法,因此您可能会更容易发现拼写错误。此外,由于查询只被转换为 sql 一次,因此性能应该会有小幅提升。
    猜你喜欢
    • 2017-03-17
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2016-03-03
    • 2014-03-03
    相关资源
    最近更新 更多