@Entity
public class GiganticEntity {
@Id Long id;
@OneToOne(mappedBy = "giganticEntity")
Foo foo;
@OneToOne(mappedBy = "giganticEntity")
Bar bar;
@OneToOne(mappedBy = "giganticEntity")
Baz baz;
// default constructor + getters/setters
public GiganticEntity(Long id, Baz baz) {
this.id = id;
this.baz = baz;
}
}
"SELECT new package.GiganticEntity(ge.id, ge.baz) " +
"FROM GiganticEntity ge WHERE ge.id = 1";
"SELECT new package.GiganticEntity(ge.id, b) FROM GiganticEntity ge " +
"LEFT JOIN ge.baz as b " +
"WHERE ge.id = 1";
"SELECT GiganticEntity g WHERE g.id = 1";
这在JPA中是可以实现的吗?我正在使用Hibernate作为它的实现。
编辑:查询实际上需要left join
,所以我需要所有具有baz
-es的大型实体。
因为GiganticEntity
与BAZ
有一对一的反向关联:
@OneToOne(mappedBy = "giganticEntity")
Baz baz;
这意味着Baz还与GiganticEntity
有关联:
@OneToOne
GiganticEntity giganticEntity;
因此查询可以变为:
select new package.GiganticEntity(g.id, b)
from Baz b
join b.giganticEntity g
where g.id : id
@Entity
@Table(name="GiganticEntity")
@Immutable
public class GignaticBazViewEntity {
@Id Long id;
@OneToOne(mappedBy = "bar")
Bar bar;
@OneToOne(mappedBy = "baz")
Baz baz;
public GiganticEntity(Long id, Bar bar, Baz baz) {
this.id = id;
this.bar = bar;
this.baz = baz;
}
}
select g
from GignaticBazViewEntity g
left join fetch g.bar
left join fetch g.baz
where g.id : id
select g
from GignaticBazViewEntity g
FETCH ALL PROPERTIES
where g.id : id
问题内容: 我有两个具有双向@OneToOne映射的类。 我需要编写代码来检索B的所有实例,这些实例没有与之关联的A实例。我还需要为所有没有B的A编写类似的查询。 我努力了: 但这似乎总是返回null。有什么想法吗? 问题答案: 这对两个方向都应该起作用:
我在两个实体之间有双向或父/子关系: 我要选择没有的所有或的属性设置为的。 我使用的是。
我想知道是否有办法微调JPA/Hibernate以管理以下用例。我有以下对象模型: 然后我执行以下代码: 我想要实现的是: > 根据用例调整Hibernate,即不更改实体类; 使Hibernate执行两个查询: 上面的代码片段与Child-Sunder lazy fetch的基本行为是: (1)执行对实体的一个查询; (2)对实体的所有实体执行一个查询; (3)n个查询,每个实体一个。 通过阅读
我的实体。ValidationStep与documentDetail有一对一的关系,documentDetail与documentValidations有一个完全的关系 我的删除查询 父ValidationStep被删除,但是docDetail和documentValidations仍然在数据库中。
我有一个使用Spring Boot JPA(Spring Boot starter data JPA dependency)的项目,它使用Hibernate作为JPA实现。 我自动配置了我的容器(@EnableAutoConfiguration),并且我使用EntityManager进行CRUD操作。 问题:我在启动时使用EntityManager通过HQL查询加载实体,但当我想要编辑或删除其中任
我可能需要一些帮助,因为我被这些文件弄糊涂了: 我有一个JPA母公司: 和孩子: 如果我只是增加联系人,我希望JPA能够建立这种关系。 e、 g: 现在发生的是: 触点插入DB(良好) 使用providerX。联系人中的id。提供者列(良好) provider\u contact表中未显示任何关系条目 我知道我可以将联系人设置为提供者的属性<代码>providerX。联系人。添加(c)。。。回购。