【发布时间】: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