gpt4 book ai didi

java - Hibernate OneToMany 映射

转载 作者:搜寻专家 更新时间:2023-11-01 03:54:11 24 4
gpt4 key购买 nike

我有两个模型类:Equity 和 EquityData。从 Equity 到 EquityData 存在 OneToMany 关系。我很难让 Hibernate 以我想要的方式进行绑定(bind)。

@Entity
@Table(name="equities")
public class Equity
{
@Id
@GeneratedValue
@Column(name="Equity_ID")
private Integer id;

private String symbol;

@OneToMany(mappedBy="equity")
private List<EquityData> equityData;
...
}


@Entity
public class EquityData
{
@Id
@GeneratedValue
@Column(name="id")
private Integer id;

@ManyToOne
@JoinColumn(name="Equity_ID")
private Equity equity;

@Column(name="quote_time") private Date quoteTime;
@Column(name="quote_type_id") private Integer quoteTypeId;
@Column(name="value") private BigDecimal value;
...
}

现在一个 Equity 可以有很多 EquityQuotes,但总会有一个“最新”报价(具有最新报价时间的报价)。现在,按照我将 Hibernate 绑定(bind)到我的实体的方式,它将检索 Equity 和所有 EquityData。我只希望它为每个 EquityDataType 检索最新的 EquityData(即我不关心昨天的数据,只关心今天的数据)。

在 SQL 中,它看起来像这样:

select d.equity_id, d.quote_type_id, d.value, max(quote_time) 
from equities e, equity_data d
where e.equityID = d.equity_id and e.symbol = :symbol
group by d.equity_id, d.quote_type_id;

如果有任何帮助,我将不胜感激!我认为这不重要,但我在 Stripes Web Framework 中使用它。

最佳答案

您可以在股票数据列表中将获取类型设置为 LAZY,然后编写命名查询并仅获取今天的股票数据。由于您使用的是 Hibernate,因此您也可以使用 Criteria API 来实现这一点。

关于java - Hibernate OneToMany 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13638702/

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