我以为我知道该如何使用JOIN
,JPQL
但显然不知道如何使用。谁能帮我?
select b.fname, b.lname from Users b JOIN Groups c where c.groupName = :groupName
这给我例外
org.eclipse.persistence.exceptions.JPQLException
Exception Description: Syntax error parsing the query
Internal Exception: org.eclipse.persistence.internal.libraries.antlr.runtime.EarlyExitException
Users
与拥有OneToMany关系Groups
。
Users.java
@Entity
public class Users implements Serializable{
@OneToMany(mappedBy="user", cascade=CascadeType.ALL)
List<Groups> groups = null;
}
Groups.java
@Entity
public class Groups implements Serializable {
@ManyToOne
@JoinColumn(name="USERID")
private Users user;
}
我的第二个问题是,说此查询返回唯一的结果,那么如果我这样做
String temp = (String) em.createNamedQuery("***")
.setParameter("groupName", groupName)
.getSingleResult();
***
代表上面的查询名称。那么fname
,将其lname
串联在一起temp
还是会得到List<String>
回报?
JPQL中的一对多关系如下所示:
select b.fname, b.lname from Users b JOIN b.groups c where c.groupName = :groupName
在select
子句中指定多个属性时,结果返回为Object[]
:
Object[] temp = (Object[]) em.createNamedQuery("...")
.setParameter("groupName", groupName)
.getSingleResult();
String fname = (String) temp[0];
String lname = (String) temp[1];
顺便说一下,为什么您的实体以复数形式命名,这令人困惑。如果要使用复数形式的表名,则可以使用@Table
显式指定实体的表名,这样就不会干扰保留字:
@Entity @Table(name = "Users")
public class User implements Serializable { ... }
问题内容: 我正在尝试使用join语句中的常量值从同一表中加入不同实体。在SQL中,我会做这样的事情… 在Java + JPA / Hibernate中,我正在尝试执行以下操作… 提前致谢! 问题答案: 您正在查看非标准联接。这是处理这种情况的文档: http://docs.oracle.com/cd/E13189_01/kodo/docs40/full/html/ref_guide_mappin
我有一个项目,其中一部分数据结构是用@ Inheritance(strategy = Inheritance type)制作的。已加入)。数据结构的这一部分看起来像这样: 该设计基于本文的思想。我使用Hibernate和JPA2接口作为我的数据层。上面的结构产生了下面的pojo/dao类(省略了getter和setter): 基本项: 物理项目: 一些硬件: 其他硬件: 这是我的问题: 我的另一个
我正在使用Spring Boot,JPA和Hibernate。我有以下实体,它与有关: 当我读取一个用户时,Hibernate会为每个附加角色生成一个选择,而不是使用加入。在纯Hibernate中,我将通过添加来解决这个问题 但这似乎没有任何影响。 是否可以为有关此实体的所有查询设置首选提取模式? 我找到的一种解决方法,我真的认为这是一种解决方法,因为我需要为每个查询指定它,是这样的:
问题内容: 给定下面的JPA实体,我想获取 具有至少一个成功状态的“请求”的所有借方。 可能有许多请求具有相同的debit_id和不同的状态 我应该使用这样的东西还是有更好的做事方法 entityManager.createQuery(“从借方d连接d.id中选择c,其中request.status =成功” 而其他实体是 如果缺少任何内容,请发表评论,而不是关闭或拒绝该问题! 问题答案: 基本上
当通过邮递员插入员工记录时,我得到了以下异常。 我有以下表格:1。emp_登机_详情- 异常:“org.hibernate.TransientPropertyValueException:对象引用了未保存的临时实例-在刷新之前保存临时实例:com.boarding.preboardingentities.Empboardingdetails.SubcontainDetails- 这是我的课程: 由
问题内容: 我有这样的SQL语句: 因此,它为personID提供了“区别”行: 如果我有这样的表: 它会回来 现在,我尝试通过JPA CriteriaBuilder进行此操作。 我的第一个想法是子查询: 但这会产生错误 怎么对这个? 马可 问题答案: 我认为解决方案比看起来简单。您忘记了包含在CriteriaBuilder子查询中。以下代码执行您要查找的查询。 此代码将创建以下查询: 我认为您正