我正在寻找基于表类型和引用键从2个不同表中获取数据的解决方案,请查看以下示例表结构和实体类。
表
1**Type**
(ID, TableName // Value for TableName can be 'TableA' or 'TableB')
2**TableA**
( ID, NameForA)
3**TableB**
(ID, NameForB)
4**TableMain**
(ID, Name, TypeID (foreign key of Type table), DataID (can be reference of TableA or TableB))
实体类结构
Class Abstract Model{ int ID; } // Model is base class, holds data of ID field and is parent for all entity classes
Class Type extends Model{String TableName;}
Class TableA extends Model{String NameForA;}
Class TableB extends Model{String NameForB;}
Class TableMain extends Model{
String Name;
Type type;
Model data; // can be TableA class or TableB based on Type
}
我正在寻找的是,TableMain类有字段'data'它可以是TableA或TableB类的对象,如果表名是'TableA'那么它将基于'Type'来保存tableName然后数据将是实例TableA类或如果tableName是'TableB',则数据将是TableB的实例。
我知道这不是一个好习惯,但我已经有了很大的数据库结构,我无法改变它。所以这是我必须解决的唯一方法。
是否有人可以帮助我,如何使用hibernate或任何其他方式?或者是否可以通过hibernate自动填充数据。
感谢。
答案 0 :(得分:1)
使用PostgreSQL,您可以轻松地继承数据库表:
Create Table model(...);
Create Table type(...) inherits model;
适合Java
public class Model{...}
public class Type extends Model{...}
(尝试使用eNexus DB Designer(enexus dbd)。)