【问题标题】:Is it possible in Hibernate? and how?在休眠中可以吗?如何?
【发布时间】:2012-02-28 06:47:04
【问题描述】:

我正在寻找根据表类型和引用键从 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 类具有字段“数据”,它可以是 TableA 或 TableB 类的对象,如果表名是“TableA”,它将根据包含 tableName 的“类型”决定,那么数据将是实例TableA 类的名称,或者如果 tableName 是“TableB”,则数据将是 TableB 的实例。

我知道这不是一个好习惯,但我已经有很大的数据库结构,我无法更改它。所以这是我必须解决的唯一方法。

有没有人可以帮助我,如何使它与休眠或任何其他方式一起工作?或者是否可以通过休眠自动填充数据。

谢谢。

【问题讨论】:

    标签: java hibernate


    【解决方案1】:

    使用 PostgreSQL,您可以轻松继承 Database-Tables:

    Create Table model(...);
    Create Table type(...) inherits model; 
    

    为了适应 Java

    public class Model{...}
    public class Type extends Model{...}
    

    (也可以试试 eNexus DB Designer (enexus dbd)。)

    【讨论】:

    • 但是 SQL inhirate 只在 Table-Structure 上! “模型”和“类型”的行集不同。
    • 感谢您的回复,但是我在 Oracle 中有数据库,我无法更改它,我想让它与 Hibernate 一起使用。
    • Oracle 可以像 PostgreSQL 一样继承(或者 PostgreSQL 像 Oracle):D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 2019-03-11
    相关资源
    最近更新 更多