命名休眠查询的“命名查询未知”?
Posted
技术标签:
【中文标题】命名休眠查询的“命名查询未知”?【英文标题】:"Named query not known" for named Hibernate query? 【发布时间】:2012-04-21 18:12:32 【问题描述】:可能是什么问题?
@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
堆栈跟踪:
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
【问题讨论】:
你为什么不只使用 name="User.all"? Eclipse 只能确认常量的使用。因此,如果我使用"User.all"
创建查询,它是一个不会被检查的字符串。使用 User.ALL
如果我拼写错误,会在编译前检查。
你能发布你的 hibernate.cfg.xml/persistence.xml 吗?
打开“hibernate.log”并检查是否出现类似“[org.hibernate.cfg.annotations.QueryBinder] (main:) Binding Named query: User.all => SELECT u FROM User u"... 然后检查你的持久化文件并检查 User 类是否被映射。
这能回答你的问题吗? Named query not known - Annotations & Hibernate
【参考方案1】:
不确定这是否是您的问题,但请查看此帖子 here。
问题在于使用:
org.hibernate.annotations.Entity
代替:
javax.persistence.Entity
【讨论】:
这是一个很好的注意点,但不幸的是,我在 mace 案例中使用了正确的导入。 嗯,值得一试。您是否将 hibernate.cfg.xml 中的类声明为以上是关于命名休眠查询的“命名查询未知”?的主要内容,如果未能解决你的问题,请参考以下文章