【问题标题】:Doubt regarding JPA namedquery关于 JPA 命名查询的疑问
【发布时间】:2010-11-15 16:57:44
【问题描述】:

我正在尝试执行命名查询

@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。员工表包含密码和其他机密详细信息等字段,我不知道'不想获取。所以我没有使用select e from Employee e。 我正在学习 JPA,任何人都可以提供帮助。

【问题讨论】:

    标签: jpa ejb-3.0


    【解决方案1】:

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

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

    它将返回带有选定字段的员工实体,其余的将具有默认值。

    【讨论】:

      【解决方案2】:

      通过在返回的对象上调用 .getClass() 来检查返回的类型。我猜它是一个数组。

      但这并不是真正使用 JPA 的好方法。选择整个实体,然后不要使用您不需要的东西。这对性能没有那么大的影响。

      【讨论】:

      • 感谢投票。但 Nayan 的回答正是我所需要的。无论如何感谢您的宝贵时间。
      猜你喜欢
      • 1970-01-01
      • 2021-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-02
      • 1970-01-01
      相关资源
      最近更新 更多