带有接口的Hibernate OneToMany

时间:2017-11-24 15:25:06

标签: java hibernate interface

目前我遇到的问题是需要OneToMany ArrayList个具有相同界面的不同对象。

例如:

@Entity
@Table(name = "store")
public class Store {
    @OneToMany(mappedBy = "store")
    private List<Product> allProducts;
}

public interface Product {
    String getProductCode();
}

@Entity
@Table(name = "car")
public class Car implements Product{
    int wheels;
}

@Entity
@Table(name = "computer")
public class Computer implements Product{
    String cpu;
}

我只想通过实现Product接口轻松添加其他产品。但是hibernate给了我这个错误:'One To Many' attribute value type should not be 'Product'

我发现了一些关于这个问题的帖子,但它们已经很老了(5年或更久)。他们都认为当时这是不可能的。

hibernate在过去5年中是否添加了任何功能来解决此问题,还是有其他任何好方法可以在同一OneToMany关系中添加多个对象?每次添加新产品时,我都不想更新Store类。

1 个答案:

答案 0 :(得分:1)

  

在过去5年中,hibernate是否添加了任何功能来解决此问题   问题还是有任何其他好的方法来添加多个对象   同一个OneToMany关系?我不想更新我的Store类   我每次添加新产品。

我认为满足您需求的最佳方式是 Product提升为实体(或者至少使其成为映射的SuperClass)。无论如何,@Any注释可以帮助你的情况,用于模拟多态关联。