Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate:如何映射一个;has-a“;一个表的子类?_Java_Hibernate - Fatal编程技术网

Java Hibernate:如何映射一个;has-a“;一个表的子类?

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;

我有一个类BacktestResult,它包含一个属性BacktestInputs。我希望hibernate创建一个包含这两个文件内容的表。以下是我目前掌握的情况:

    @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个表:

  • 回测结果
  • 回溯测试结果系列
  • backtestchart\u数据点
  • 但是我希望BacktestInputs的内容包含在BacktestResult表中。如果我取消注释它,则会出现错误:

    无法确定以下项的类型: net.teknow.moneymachine.model.BacktestInputs,见表: 对于列:[org.hibernate.mapping.Column(输入)]


    处理具有“has-a”关系的类层次结构的正确方法是什么?NOT“is-a”关系?

    您需要使用
    @embeddeble
    注释类
    backtestinput

    (请参阅)

    您需要使用
    @embeddeble
    注释类
    BacktestInputs

    (请参阅)

    感谢您提供了清晰的示例链接。我以前在复合键中使用过嵌入。没有意识到它有更广泛的用途。我会尝试一下,如果成功的话,我会回来接受这个答案。谢谢你的链接和清晰的例子。我以前在复合键中使用过嵌入。没有意识到它有更广泛的用途。我会尝试一下,如果成功的话,我会回来接受这个答案。