Tag: 命名查询

Hibernate命名查询是否是真正意义上的预编译?

预编译的查询由DB供应商(如oracle,sql server等)预先编译和缓存,以便它们可以更快地进行连续调用,如预处理语句。 在Hibernate命名查询据说是在Web服务器启动时预编译的。 这是否意味着所有查询都在服务器启动时触发,以便它们可以由DB供应商预编译或预编译在hibernate上下文中具有不同的含义?

如何在JPA命名查询中处理数字类型的空值

我想将两个参数传递给namedquery。 一个是数字类型,另一个是字符串类型。 它们都可以为空。 例如,(id = null,username =’joe’)和(id = 1,username =’joe’)是两个不同的结果。 在namedQuery中,如果id为null,则语法为“u.id为null”,如果id为非null,则为“u.id =:id”。 我的问题是如何动态处理namedQuery中的id? 请检查我的示例代码: 1.User.java @NamedQueries({ @NamedQuery(name = “getUser”, query = “select u from User u” + ” where u.id = :id” + ” And u.username= :username”) }) public class User{ public Long id; public String username; } UserDao.java public User getUser(Long id, String username) […]

命名查询中的Hibernate错误

我试图从当前日期在任何给定月份的第一天和最后一天之间的表中提取信息。 我收到运行时错误“命名查询中的错误:Department.byDate” 我正在向您提供我认为可能导致问题的代码,如果需要任何其他代码,请在评论中告诉我。 我的命名查询如下所示: @NamedQuery(name=”Department.byDate”, query=”select * from department where date >= :first AND date <= :last") 我在我的DAO中使用这个命名查询的方法如下所示: public List getRecords(Date dateFirst, Date dateLast){ Session session= sessionFactory.openSession(); session.beginTransaction(); Query query = session.getNamedQuery(“Department.byDate”); query.setDate(“first”, dateFirst); query.setDate(“last”, dateLast); List depList = (List)query.list(); session.getTransaction().commit(); session.close(); return depList; } 我获得这几个月的第一天和最后几天的方法如下: Calendar first = Calendar.getInstance(); first.set(Calendar.getInstance().get(Calendar.YEAR), Calendar.getInstance().get(Calendar.MONTH), Calendar.getInstance().getActualMinimum(Calendar.DAY_OF_MONTH)); Date dateFirst […]

在where子句中使用like命名查询

是否可以在命名查询的where子句中使用like? 我正在努力做以下事情,但我得到例外 @NamedQuery(name = “Place.getPlaceForCityAndCountryName”, query = “SELECT p FROM Place p WHERE ” + “lower(p.city) like :city and ” + “lower(p.countryName) like :countryName”); 我尝试添加%,就像在普通SQL中一样,但是会编译exception。 任何指针非常感谢! 谢谢

Hibernate:在存储过程命名查询中映射自定义列名

我目前有以下命名查询包装存储过程: – { call some_sp :param } 列name_first和name_last是存储过程返回的确切列名。 我创建了一个包含相同列名的bean,以便我可以将查询结果映射到该bean。 public class MyBean { private String name_first; private String name_last; … } 调用命名查询并将结果映射到bean的Hibernate代码: – MyBean myBean = (MyBean) sessionFactory.getCurrentSession() .getNamedQuery(“mySp”) .setParameter(“param”, param) .setResultTransformer(Transformers.aliasToBean(MyBean.class)) .uniqueResult(); 所有这些工作都很好,但我没有依赖存储过程中的列名,而是想在MyBean使用我自己的列名,例如: – public class MyBean { private String firstName; // instead of name_first private String lastName; // instead of name_last … } […]

Hibernate中带有命名查询的可选参数?

在使用Hibernate时,有没有办法在命名查询中指定可选参数(例如,何时从表单提供搜索参数而不是所有参数都需要)? 我正在使用本机SQL查询,但问题可能也适用于命名的HQL查询。 我很确定答案是’不’,但我还没有在文档中找到明确的答案。

使用jpa和hibernate在orm.xml中定义命名查询

我正在尝试将我的命名查询放在我的orm.xml中(使用persistence.xml放入META-INF)但是我的orm.xml似乎被hibernate / jpa忽略了。 当我尝试使用em.createNamedQuery(“myQuery”)创建我的命名查询时,它返回它无法找到此查询。 我使用注释,我想在orm.xml中外化我的命名查询(仅限于此)。 这是我的persistence.xml: META-INF/orm.xml com.mysite.Account 这是我的orm.xml com.mysite 我做错了什么? 为什么我的orm.xml被忽略了? 谢谢