gpt4 book ai didi

java - 具有聚合属性的 EJB3/JPA 实体

转载 作者:搜寻专家 更新时间:2023-11-01 02:33:32 30 4
gpt4 key购买 nike

我想知道是否有办法在 One2Many 关系中获取单方字段,该字段是多方的聚合。

让我们来看下面的例子:

@Entity
public class A {
@Id
private Long id;
@OneToMany (mappedBy="parentA")
private Collection<B> allBs;

// Here I don't know how to Map the latest B by date
private B latestB;
// Acceptable would be to have : private Date latestBDate;
}

@Entity
public class B {
@Id
private Long id;
private Date date;
@ManyToOne (targetEntity=A.class)
private A parentA;
}

我的问题是如何在 A 实体对象中映射字段 latestB 而不进行任何反规范化(不使字段与触发器/监听器保持同步)?

也许这个question给出了一些答案,但我真的不明白它是如何工作的,因为我仍然希望能够获取所有子对象。

感谢阅读/帮助。

PS:我使用hibernate作为ORM/JPA提供者,所以如果没有JPA解决方案,可以提供一个Hibernate解决方案。
PS2: 或者只是告诉我我不应该这样做(当然有论据);-)

最佳答案

I use hibernate as ORM/JPA provider, so an Hibernate solution can be provided if no JPA solution exists.

可以使用 @Formula 实现可接受的解决方案(即获取最新 BDate)。

@Entity
public class A {
@Id
private Long id;
@OneToMany (mappedBy="parentA")
private Collection<B> allBs;

@Formula("(select max(b.some_date) from B b where b.a_id = id)")
private Date latestBDate;
}

引用资料

资源

关于java - 具有聚合属性的 EJB3/JPA 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3709010/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com