不要回避它 ,因为有第 10.2.7.2节 所提醒的,因为它有完全有效的用例,所以这里有SELECt NEW 。 EJB 3.0
JPA规范
的SELECT子句 中的 JPQL构造函数表达式 :
SELECT列表中可以使用构造函数来返回一个或多个Java实例。指定的类不需要是实体,也不必映射到数据库。 构造函数名称必须完全合格。
如果在SELECT NEW子句中指定了实体类名称,则生成的实体实例将处于新状态。
SELECT NEW com.acme.example.CustomerDetails(c.id, c.status, o.count)FROM Customer c JOIN c.orders oWHERe o.count > 100
简而言之,当您不想以类型安全的方式(而不是
Object[])检索完整的实体或对象的完整图形时,请使用SELECT NEW
。您将查询结果映射到实体类还是非映射类将取决于您的选择。一个典型的示例是列表屏幕(您可能不需要所有详细信息)。
换句话说,不要在任何地方都使用它,但不要禁止它的使用(很少有东西是黑色或白色的)。



