关于JPA namedquery的疑问

时间:2010-11-15 16:57:45

标签: jpa ejb-3.0

我正在尝试执行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可以帮助任何人。

2 个答案:

答案 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的好方法。选择整个实体,然后不要使用你不需要的东西。这不是一次性能打击。