关于JPA namedquery的疑问

Har*_*ish 0 jpa ejb-3.0

我正在尝试执行命名查询

@NamedQuery(name="getEmployeeDetails",query="select e.username,e.email,e.image,e.firstname,e.lastname from Employee e where e.empid=?1")
Run Code Online (Sandbox Code Playgroud)

现在,当我在EJB 3.0会话Bean中执行此查询时,我应该返回什么对象.我尝试返回Listits,返回一个Vector,它创建一个classcast异常.员工表包含密码和其他机密细节等字段,我不想要拿来.所以我没有用select e from Employee e.我正在学习JPA可以帮助任何人.

Nay*_*kar 6

下面是示例查询,它只获取必需的字段,但必须为它创建这样的构造函数.

查询: SELECT NEW package_name.Employee(e.username,e.email,e.image,e.firstname,e.lastname) FROM Employee e where e.empid=?1;

它将返回具有所选字段的Employee实体,其余将具有默认值.


Boz*_*zho 5

通过调用.getClass()返回的对象来检查返回的类型.我猜它是一个阵列.

但这并不是使用JPA的好方法.选择整个实体,然后不要使用你不需要的东西.这不是一个性能打击.