2012-04-21 39 views
5

Điều gì có thể là vấn đề?"Truy vấn được đặt tên không được biết" cho truy vấn Hibernate có tên?

@Entity 
@NamedQueries({ 
    @NamedQuery(name = User.ALL, 
       query = "SELECT u FROM User u") 
}) 

public class User { 
    public static final String ALL = "User.all"; 
} 

public class Service { 
    find... with ... User.ALL 
} 

stacktrace:

Caused by: org.hibernate.MappingException: Named query not known: User.all 
    at org.hibernate.impl.AbstractSessionImpl.getNamedQuery(AbstractSessionImpl.java:93) 
    at org.hibernate.impl.SessionImpl.getNamedQuery(SessionImpl.java:1407) 
    at $Session_a5ad46cfa25.getNamedQuery(Unknown Source) 
    at $Session_a5ad46cf913.getNamedQuery(Unknown Source) 
    at de.medicshare.dal.HibernateCrudServiceDAO.findUniqueWithNamedQuery(HibernateCrudServiceDAO.java:83) 
    at $CrudServiceDAO_a5ad46cfa19.findUniqueWithNamedQuery(Unknown Source) 
    at $CrudServiceDAO_a5ad46cfa1b.findUniqueWithNamedQuery(Unknown Source) 
    at $CrudServiceDAO_a5ad46cf931.findUniqueWithNamedQuery(Unknown Source) 
    at de.medicshare.pages.Signup.proceedSignup(Signup.java:82) 
    at de.medicshare.pages.Signup.dispatchComponentEvent(Signup.java) 
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.dispatchEvent(ComponentPageElementImpl.java:923) 
    at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.processEventTriggering(ComponentPageElementImpl.java:1106) 
    ... 90 more 
+0

tại sao bạn không sử dụng chỉ tên = "User.all"? – Nurlan

+0

Eclipse chỉ có thể xác nhận việc sử dụng các hằng số. Vì vậy, nếu tôi tạo truy vấn với '" User.all "' nó là một chuỗi không được kiểm tra. Sử dụng 'User.ALL' được kiểm tra trước khi biên dịch nếu tôi đánh vần sai. – membersound

+1

Bạn có thể đăng hibernate.cfg.xml/persistence.xml của mình không? –

Trả lời

2

Không chắc chắn nếu điều này sẽ là vấn đề của bạn nhưng hãy kiểm tra bài này here.

Vấn đề là việc sử dụng:

org.hibernate.annotations.Entity 

Thay vì:

javax.persistence.Entity 
+0

Đó là một điểm tốt để thông báo, nhưng thật không may, tôi đã sử dụng tính năng nhập phù hợp trong trường hợp mace. – membersound

+0

Ahh cũng đáng để thử. Bạn đã khai báo lớp trong hibernate.cfg.xml của bạn (các phần mở rộng ở cuối có thể thay đổi) như là một ? –

Các vấn đề liên quan