Bạn có thể đặt các truy vấn vào package-info.java
lớp, ở, nói rằng, gốc gói các đối tượng miền của bạn. Tuy nhiên, bạn phải sử dụng các chú thích @NamedQueries
và @NamedQuery
riêng của Hibernate, thay vì các chú thích từ javax.persistence
.
Ví dụ package-info.java
file:
@org.hibernate.annotations.NamedQueries({
@org.hibernate.annotations.NamedQuery(
name = "foo.findAllUsers",
query="from Users")
})
package com.foo.domain;
Sau đó, bạn cần phải thêm các gói để AnnotationConfiguration
của bạn. Tôi sử dụng mùa xuân, vì vậy đó là một vấn đề của thiết annonatedPackages
tài sản:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="annotatedClasses">
<list>
...
</list>
</property>
<property name="annotatedPackages">
<list>
<value>com.foo.domain</value>
</list>
</property>
Bạn cũng có thể đặt loại và lọc các định nghĩa trong cùng một tập tin là tốt.
Từ quan điểm của tôi, đây không phải là truy vấn bên ngoài - nó được biên dịch trong lớp và cho tôi có hàng tá truy vấn trong lớp thực thể hoặc thậm chí nhiều truy vấn hơn trong lớp gói-thông tin tôi sẽ chọn thực thể. IMHO đây không phải là câu trả lời đúng cho câu hỏi này, tôi không biết tại sao nó được chấp nhận -> -1 – Betlista
+1 Đối với tôi, điều đó là ổn. Nó cũng cho thấy cách sử dụng Java Config và XML. Đọc câu hỏi trước khi downvoting, nó nói rõ rằng anh ta không muốn có các NamedQueries bên trong lớp. – Augusto