2009-05-09 2 views
0

좋아, 내가 가지고있는 것을 찢어 버리고 재건하고있다. 내가해야 할 일이 여기에있다.최대 절전 모드 매핑 문제 해결에 도움이됩니다! :)

저는 Property라는 엔티티가 있습니다 :

문자열 이름;

@ManyToOne EntityType 유형;

??????? 값

값도 저장해야하지만 유형에 따라 값은 String, Double 또는 Class.getJavaClass() 클래스의 다른 객체에 대한 링크가 될 수 있습니다.

나는 상속 여러 가지 방법으로이 작업을 시도했지만 새로운 Property()를 수행 할 수 있어야하고 적절한 유형의 Type이 선택 될 때 Type이 선택 될 때까지 값을 null로 설정해야합니다.

가장 가치있는 것은 Object, 즉 String, Double 또는 type.getJavaClass() 중 하나를 넣을 수있는 값을 갖는 것이지만 최대 절전 모드에서는 수행 할 수 없습니다. :(

이 작업을 수행 할 수있는 좋은 방법에

어떤 아이디어 나 추천을 주시면 감사하겠습니다! 감사, 여호수아

답변

0

문제는 Hibernate가 그렇게 Object의 유형은 정말하지 않는 데이터베이스에 매핑 할 수 있어야입니다

문자열 형식의 값을 사용하는 것이 좋습니다. 그렇다면 w 최종 호출자가 알지 못하도록 "get"및 "set"호출 랩. 예 :

public class Property 
{ 

String name; 

Enum Type; 
String valueString; 




public object getValue() 
{ 
    if(getType() == Long) 
    { 

    return Long.valueOf(getStringValue()); 
    } 

    if(getType() == String) 
    { 
     return valueString; 
    } 

    ..... 

} 

public void setValue(obj) 
{ 
    if(obj instanceof Long) 
    { 
    setStringValue(obj.toString()) 
     setType(Long) 
    } 
    .... 

} 

} 

다른 개체에 대한 링크는 다른 테이블에 대한 링크를 의미합니까? 어떤 경우에는 데이터베이스마다 참조 무결성을 유지할 수 있도록 각 테이블마다 별도의 열을 만들 수도 있습니다. 그런 다음 getValue(), setValue()를 향상시켜 적절한 엔티티를 가져올 수 있습니다.

+0

예, 기본적으로 내가 getTypeValue()와 getNumericalValue() 및 getEntityValue()를 모두 ValueType에서 상속받은 곳으로 혼동 시켰습니다. 나는이 모든 상속 재산에 물건을 넣은 거대한 테이블과 함께 공연 공연을 보지 않기를 바랄 뿐이지 만 확실히 아름답다. 감사합니다. Joshua –