2015-10-26 15 views
8

Chúng tôi có một truy vấn:Làm thế nào để loại bỏ thông điệp cảnh báo Hibernate deprecation

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

Nhưng khi thực hiện truy vấn này, chúng tôi đã nhận một thông điệp cảnh báo:

WARN 10:19:41 deprecation: HHH90000016: Tìm thấy việc sử dụng cú pháp không hợp lệ 'thuộc tính bộ sưu tập' trong truy vấn HQL/JPQL [null.elements]; sử dụng cú pháp hàm sưu tập thay vì [thành phần (null)].

tôi đã cố gắng để thay đổi truy vấn để:

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

nhưng thông điệp cảnh báo vẫn còn đó.

Vui lòng giúp tôi khắc phục cảnh báo này.

P/s: Hiện tại chúng tôi đang sử dụng Hibernate 5.0.2

Trả lời

7

Đó là JPA quy phạm pháp luật và vì vậy không nên phản đối. Xem thêm http://download.oracle.com/otndocs/jcp/persistence-2.0-fr-oth-JSpec/.

Xem https://hibernate.atlassian.net/browse/HHH-10621 cho JIRA về lỗi này.

Bạn chỉ có thể ẩn thư bằng cách thêm log4j.logger.org.hibernate.orm.deprecation=error vào số log4j.properties của mình.

(Tôi biết đây là một câu hỏi cũ nhưng nó được sử dụng trong các cuộc gọi JIRA)

+0

Cũng như một FYI, tôi phát hiện ra rằng việc thay đổi JPQL sử dụng tham gia vào một bên trong kết quả trong một truy vấn nhiều hiệu quả hơn. – kensei62

0

Là một mặt lưu ý, chỉ đơn giản là ẩn (không sửa chữa) các thông điệp như thế này, tính đến và Log4j2 , sử dụng org.hibernate.orm.deprecation, ví dụ:

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

Hãy chắc chắn để sử dụng mã cụ thể cho thông điệp deprecation cụ thể của bạn, trong trường hợp đặc biệt này đó là HHH90000016, nhưng đối với cảnh báo tiêu chuẩn-API deprecation nó sẽ là HHH90000022, và Sớm.

Hoặc để vô hiệu hóa tất cả Hibernate điệp deprecation (không khuyến khích):

<Logger name="org.hibernate.orm.deprecation" additivity="false" level="ERROR"> 
    … 
</Logger> 
Các vấn đề liên quan