2015-10-26 16 views
8

Wir haben eine Abfrage entfernen:Wie Hibernate deprecation Warnmeldung

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

aber bei der Ausführung dieser Abfrage haben wir eine Warnmeldung:

WARN 10.19.41 deprecation: HHH90000016: Verwendung der veralteten 'collection property' Syntax in HQL/JPQL Abfrage [null.elements]; Verwenden Sie stattdessen die Syntax der Auflistungsfunktion [elements (null)].

Ich habe versucht, die Abfrage zu ändern:

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

aber die Warnmeldung noch da war.

Bitte helfen Sie mir, diese Warnung zu beheben.

P/s: Wir sind derzeit Hibernate 5.0.2

Antwort

7

Es ist legal, JPA und so nicht weiterentwickelt werden soll. Siehe auch http://download.oracle.com/otndocs/jcp/persistence-2.0-fr-oth-JSpec/.

Siehe https://hibernate.atlassian.net/browse/HHH-10621 für die JIRA über diesen Fehler.

Sie können die Nachricht einfach ausblenden, indem Sie log4j.logger.org.hibernate.orm.deprecation=error zu Ihrem log4j.properties hinzufügen.

(Ich weiß, das war eine alte Frage, aber es ist in dem JIRA-Aufruf verwendet)

+0

So wie ein FYI, ich, dass die JPQL eine innere in einer viel effizienteren Join-Abfrage Ergebnisse zu verwenden, um Ändern herausgefunden haben. – kensei62

0

Als Randbemerkung, einfach zu verstecken (nicht fix) Meldungen wie diese, wie von und Log4j2 zu verwenden, org.hibernate.orm.deprecation, zum Beispiel:

<Logger name="org.hibernate.orm.deprecation" additivity="false" level="WARN"> 
    <RegexFilter regex=".*HHH90000016.*" onMatch="DENY" onMismatch="NEUTRAL"/> 
    … 
</Logger> 

Achten sie darauf, den spezifischen Code für Ihre spezielle deprecation Nachricht zu verwenden, in diesem speziellen Fall war es HHH90000016, aber für Criteria-API deprecation Warnungen wäre es HHH90000022 sein, und bald.

Oder alle Hibernate deprecation Nachrichten (nicht empfohlen) zu deaktivieren:

<Logger name="org.hibernate.orm.deprecation" additivity="false" level="ERROR"> 
    … 
</Logger>