2012-02-28 3 views
2

나는 테이블 형식과 참조 키에 따라 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'이면 데이터가 TableA 클래스의 인스턴스가되거나 tableName이 'TableB'이면 데이터가 TableB의 인스턴스가됩니다.

나는 좋은 습관이 없다는 것을 알고 있지만 이미 큰 데이터베이스 구조를 가지고 있으며 변경할 수 없다. 그래서 이것이 제가 풀어야 할 유일한 방법입니다.

누구든지 절전 모드 또는 다른 방법으로 작동하도록 만드는 방법을 알려줍니다. 또는 자동으로 최대 절전 모드를 통해 데이터를 채울 수 있습니다.

감사합니다.

답변

1

easyly 상속 할 수 PostgreSQL의 당신을 사용하여 데이터베이스 테이블 :

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

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

(. 또한 eNexus DB 디자이너 (enexus dbd)를보십시오)

+0

그러나 SQL inhirate 자바에 맞게 테이블 구조에만 있습니다! "모델"과 "유형"의 행 집합이 다릅니다. –

+0

답장을 보내 주셔서 감사합니다. 그러나 오라클 데이터베이스가 있는데 변경할 수 없기 때문에 최대 절전 모드로 작동하게하고 싶습니다. –

+0

오라클은 PostgreSQL (또는 Oracle과 같은 PostgreSQL)을 상속받을 수 있습니다. D –

관련 문제