【问题标题】:How to write JPA native query to join two tables. Eclipseink JPA,Glassfish3.x,EJB3.1, MySQL如何编写 JPA 原生查询来连接两个表。 Eclipseink JPA、Glassfish3.x、EJB3.1、MySQL
【发布时间】:2013-04-04 15:31:03
【问题描述】:

使用连接和 Eclipselink JPA2.0 实体编写 JPA 原生查询的正确方法是什么?

有人可以告诉我使用 Eclipselink JPA 原生查询或 JPQL 执行以下 SQL 查询吗?

SQL 查询是: Select e.EmployeeName,e.EmpId, d.DeptId from Employee e, Department d join e.DeptId on d.DeptId where e.DeptId=d.DeptId

JPA 实体 bean 代码 sn-p

@Entity
@Table(name = "employee")

@JoinColumn(name = "DeptId", referencedColumnName = "DeptId")
@ManyToOne
    private Department DeptId;

@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Employee.findAll", query = "SELECT e FROM Employee e")})

    //more auto generated named queries using NetBeans

JPA 实体类“Employee”实现 java.io.Serializable,默认构造函数包含所有必填字段。

将 jpa 实体映射到 My-SQL 表的正确方法是什么

多对一关系:Employee.DeptId --> Department.DeptId Employee.RoleId --> JobRoles.RoleId

Employee.RoleId --> Skills.SkillId 两个表成功后,我想加入三个表。

我正在阅读 Ecipselink 用户指南,但无法获得它。 有人会为我提供代码 sn-ps 或指导我更正资源吗?

我已经浏览了 EclipseLink JPA 在线指南:

http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Querying http://wiki.eclipse.org/EclipseLink/UserGuide/JPA

我正在使用本机查询,因为 Eclipse 链接 JPA 支持它并且 JPQL 不提供完整的可移植性。 我编写并开发了一个示例 jsf-jpa 应用程序,其中 jpa 实体映射到单个表。使用 Netbeans IDE,生成和执行 JPQL 查询不需要太多时间。

我想使用本机查询和/或存储过程来执行 JPA 实体。 如果我可以在 SQL 查询和存储过程中使用我现有的技能,只要 JPA 实现不会带来太多问题,那将会更有效率。

更新: 根据3.8.15 SQL Queries of JSR 317: [JavaTM Persistence API, Version 2.0][1]部分可以使用原生SQL查询 http://download.oracle.com/otndocs/jcp/persistence-2.0-fr-oth-JSpec/

SQL 查询工具旨在为这些情况提供支持 需要使用目标数据库的原生 SQL 的地方 使用(和/或不能使用 Java Persistence 查询语言的地方)。 原生 SQL 查询预计不能跨数据库移植

因此我认为使用原生查询并没有错,因为我不需要可移植性。

【问题讨论】:

  • JB Nizet,我已经更新了帖子。我相信这是有道理的。
  • 克里斯,我正在做,并在星期一之前更新你。我已经完成了简单的操作,然后在 JSF JPA crud 中添加了一些 jpa 实体。让我输入代码 sn-ps。
  • 克里斯,我想使用本机查询,因为 JPA 支持它并希望同时使用 JPQL 和本机查询。我的应用程序不需要 JPQL 的可移植性。在更清楚地了解如何使用 JPQL 之后,我想选择其中一种 JPA2 实现 i) Eclipselink 或 ii)Hibernate JPA 的最新和稳定版本。

标签: mysql jpa-2.0 eclipselink glassfish-3 nativequery


【解决方案1】:

本机查询成功执行,JSR 317 规范的第 3.8.15 节有助于理解语法,除了命中和试验我的代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-31
    • 2011-03-22
    • 2023-03-06
    • 2020-11-25
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多