如何删除休眠弃用警告消息

2022-09-03 18:25:00

我们有一个查询:

 List<Book> books = session.createQuery(
       "from Book b where :x member of b.bookCategories")
       .setParameter("x", crimeStory)
       .list();

但是在执行此查询时,我们收到一条警告消息:

WARN 10:19:41 弃用: HHH90000016: 在 HQL/JPQL 查询 [null.elements] 中发现使用已弃用的“集合属性”语法;使用集合函数语法代替 [elements(null)]。

我试图将查询更改为:

List<Book> books = session.createQuery(
    "from Book b where ? in elements(b.bookCategories)")
    .setParameter(0, crimeStory).list();

但警告信息仍然存在。

请帮助我修复此警告。

P/s:我们目前正在使用Hibernate 5.0.2


答案 1

它是合法的JPA,因此不应被弃用。另请参见 http://download.oracle.com/otndocs/jcp/persistence-2.0-fr-oth-JSpec/

有关此 bug 的 JIRA,请参阅 https://hibernate.atlassian.net/browse/HHH-10621

您可以通过添加到 .log4j.logger.org.hibernate.orm.deprecation=errorlog4j.properties

(我知道这是一个老问题,但它在JIRA呼叫中使用)


答案 2

而不是使用 ,而是使用 .然后,JSQL应该是MEMBER OFINNER JOIN

from Book b inner join b.bookCategories bc where bc.id = :categoryId

参考资料: https://stackoverflow.com/a/8340001/67796


推荐