nih*_*t84 7 java orm jpa criteria-api jpa-2.0
@Entity
public class Person {
@ElementCollection
private List<Location> locations;
[...]
}
@Embeddable
public class Location {
private Integer dummy;
private Date creationDate;
[...]
}
Run Code Online (Sandbox Code Playgroud)
鉴于以下结构,我想执行以下SQL的HQL或CriteriaQuery等价物:
SELECT
l.*
FROM
Location l
INNER JOIN
Person p ON (p.id = l.person_id)
WHERE
p.id = ? AND l.creationDate > ?
Run Code Online (Sandbox Code Playgroud)
我想找回与给定人员相关联的位置列表,其创建日期在给定人员之后.
提前致谢!
标记
编辑***:我编辑了SQL,因为它有点误导.我不想独立查询位置.
Pas*_*ent 17
这是不可能的,你不能查询Embeddable.来自JPA Wikibook:
嵌入式集合
的
ElementCollection映射可以被用来定义的集合Embeddable的对象.这不是Embeddable对象的典型用法,因为对象未嵌入源对象的表中,而是存储在单独的集合表中.这类似于aOneToMany,除了目标对象是一个Embeddable而不是一个Entity.这允许容易地定义简单对象的集合,而不需要简单对象来定义Id或ManyToOne反向映射.ElementCollection也可以覆盖其集合的映射或表,因此您可以让多个实体引用相同的Embeddable类,但每个实体都将其依赖对象存储在单独的表中.使用an
ElementCollection而不是a 的限制OneToMany是无法独立于父对象查询,持久化,合并目标对象.它们是严格的私有(依赖)对象,与Embedded映射相同.a上没有级联选项ElementCollection,目标对象始终与父级一起保持,合并,删除.ElementCollection仍然可以使用获取类型并默认为LAZY与其他集合映射相同.
要实现您想要的,请使用a OneToMany和an Entity而不是an ElementCollection和an Embeddable.或者改变你的方法并查询Person.
| 归档时间: |
|
| 查看次数: |
7837 次 |
| 最近记录: |