我正在尝试执行namedquery
@NamedQuery(name="getEmployeeDetails",query="select e.username,e.email,e.image,e.firstname,e.lastname from Employee e where e.empid=?1")
现在,当我在EJB 3.0会话Bean中执行此查询时,我应该返回什么对象。我尝试返回Listits,返回一个Vector,它创建一个classcast异常。员工表包含密码和其他机密详细信息等字段我想要抓取。所以我没有使用select e from Employee e
。
我正在学习JPA可以帮助任何人。
答案 0 :(得分:6)
下面是示例查询,它只获取必需的字段,但必须为它创建这样的构造函数。
查询:SELECT NEW package_name.Employee(e.username,e.email,e.image,e.firstname,e.lastname) FROM Employee e where e.empid=?1;
它将返回带有所选字段的员工实体&剩下的将有默认值。
答案 1 :(得分:5)
通过在返回的对象上调用.getClass()
来检查返回的类型。我猜这是一个数组。
但这并不是使用JPA的好方法。选择整个实体,然后不要使用你不需要的东西。这不是一次性能打击。