我想使用一个Java的ORM框架将域模型映射到关系数据库.不幸的是,它们似乎都没有足够的支持实现多个接口的类.说我想要映射如下:
public interface Quotable {
}
public interface Tradable {
}
// StockIndex only implements Quotable as it cannot be trade directly
public class StockIndex implements Quotable {
}
// Stock implements both interfaces as there are market quotes and can be traded
public class Stock implements Quotable, Tradable {
}
public class Quote {
private Quotable quotable;
}
public class Trade {
private Tradable tradable;
}
Run Code Online (Sandbox Code Playgroud)
因此,我想要实现的是,报价可以引用任何报价(股票,股票指数和其他),而交易只能引用可交易实体.我已经尝试过OpenJPA和(普通)Hibernate没有运气,尽管后者对界面的支持看起来很有希望.
有没有可以处理我的场景的框架?或者有什么理由不应该映射到数据库吗?如果是这样,我的模型应该如何修改?
我最初的Hibernate映射看起来像这样(我没有显示任何OpenJPA的东西,因为它不支持接口继承或至少我无法弄清楚如何):
<hibernate-mapping package="com.foo">
<class name="Quotable" table="quotable" >
<id type="java.lang.Long" column="id">
<generator …Run Code Online (Sandbox Code Playgroud)