我已经阅读了它的定义,但不能完全理解。
解决方法
让我猜测:你已经绊倒了命名查询的概念,并且想知道它在sql中的适用范围。
那么,从我的知识来看,命名查询与“纯”sql没有任何关系,但它们是各种ORM(对象关系映射)框架ala Java Persistence API中的一个概念。
基本上,命名查询是将名称映射到可能在不同位置的代码中可能被调用多次的查询的一种方法。
所以,而不是使用
"SELECT i FROM Item i WHERE i.product.categoryID LIKE :cID"
作为代码中不同位置的字符串,您可以使用以下命令:
@NamedQuery( name="MyEntity.getItemsPerProductCategory",query="SELECT i FROM Item i WHERE i.product.categoryID LIKE :cID" )
之后,您使用MyEntity.getItemsPerProductCategory引用此查询。
示例摘自this site。
你可能会想知道为什么这是有用的?
像Hibernate这样的JPA实现可以在启动时检查命名查询的有效性,所以在某种程度上,你有安全的类型检查。这将有助于在运行时减少错误。