Java Hibernate:如何映射一个;has-a“;一个表的子类?
我有一个类BacktestResult,它包含一个属性BacktestInputs。我希望hibernate创建一个包含这两个文件内容的表。以下是我目前掌握的情况:Java Hibernate:如何映射一个;has-a“;一个表的子类?,java,hibernate,Java,Hibernate,我有一个类BacktestResult,它包含一个属性BacktestInputs。我希望hibernate创建一个包含这两个文件内容的表。以下是我目前掌握的情况: @Entity @Table(name="backtest_result") public class BacktestResult { @Id Long backtest_id; public int userId;
@Entity
@Table(name="backtest_result")
public class BacktestResult {
@Id
Long backtest_id;
public int userId;
BacktestInputs inputs;
@OneToMany
@OrderColumn(name="backtest_id")
public BacktestChartDataPoint[] series;
//getters and setters
BacktestChartDataPoint类如下所示:
@Entity
@Table(name="backtestchart_datapoint")
public class BacktestChartDataPoint {
@Id
public Long id;
public Long backtest_id;
@ManyToOne
@JoinColumn(name="backtest_id", nullable=false, insertable=false, updatable=false)
private BacktestResult backtestResult;
public class BacktestInputs {
public String strategy_name;
public String version;
etc...
BacktestInputs类如下所示:
@Entity
@Table(name="backtestchart_datapoint")
public class BacktestChartDataPoint {
@Id
public Long id;
public Long backtest_id;
@ManyToOne
@JoinColumn(name="backtest_id", nullable=false, insertable=false, updatable=false)
private BacktestResult backtestResult;
public class BacktestInputs {
public String strategy_name;
public String version;
etc...
只要我在BacktestResult中注释掉BacktestInputs,hibernate就会正确地创建3个表:
处理具有“has-a”关系的类层次结构的正确方法是什么?NOT“is-a”关系?您需要使用
@embeddeble
注释类backtestinput
(请参阅)您需要使用
@embeddeble
注释类BacktestInputs
(请参阅)感谢您提供了清晰的示例链接。我以前在复合键中使用过嵌入。没有意识到它有更广泛的用途。我会尝试一下,如果成功的话,我会回来接受这个答案。谢谢你的链接和清晰的例子。我以前在复合键中使用过嵌入。没有意识到它有更广泛的用途。我会尝试一下,如果成功的话,我会回来接受这个答案。