Equity と EquityData の 2 つのモデル クラスがあります。Equity から EquityData への OneToMany 関係があります。Hibernate を思い通りにバインドするのに苦労しています。
@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 を持つことができますが、常に "最新の" 見積もり (最新の quoteTime を持つもの) が存在します。現在、Hibernate をエンティティにバインドする方法で、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 でこれを使用しています。