2011-05-13 3 views
6

우리 프로젝트 중 하나에서 JDO를 사용하고 있습니다. 이것은 꽤 오래 실행되어 왔고 당연히 모델을 약간 변경해야합니다.JDO의 필드 마이그레이션

JDO에서 엔터티 클래스의 필드를 마이그레이션 할 때 가장 좋은 방법은 무엇입니까?

enum MyEnum { 
    REGULAR, 
    MYOLDTYPE // Delete this 
} 
@PersistenceCapable 
public class Entity { 
    @Persistent 
    MyEnum myEnumType; 
    @Persistent 
    String myString; // Rename this 

} 

열거 형 값을 삭제해도 데이터베이스에서로드 할 때 이미 유지 된 경우 예외가 발생합니다. 마이그레이션하는 방법은 무엇입니까?

myString의 이름을 myNewString으로 바꾸려면 열의 이름을 새 이름으로 바꾸는 방법은 무엇입니까?

+0

귀하의 JDO 제공 업체에 따라 다를 수 있습니다. JDO 스팩은 열거 형을 어떻게 매핑 할 것인지를 지정 하는가, 아니면 그것을 제공자에게 맡기고 있는가? –

+0

데이터 핵을 사용하고 있습니다. 열거 형은 내가 아는 한 이름으로 매핑됩니다. – jontro

답변

1

먼저 데이터 스토어 (RDBMS ?, 다른 것?)를보고 String 또는 숫자 기반으로 지속되는지 확인하십시오. 그런 다음 열거를 변경하는 경우 Enum.valueOf (문자열) 당신이 원하는 반환하도록하거나

  1. 는 데이터 저장소

  2. 변경 열거 정의의 컨텐츠를 마이그레이션하기위한

    당신은 책임 이전 값은에 매핑됩니다. 또는 RDBMS를 유지하려면 http://www.datanucleus.org/products/accessplatform_3_0/jdo/types.html에서 DataNucleus 확장을 사용하고 String에 대한 열거 형 값을 가져 오는 메소드를 정의합니다.

+0

감사! JDO로 데이터를 마이그레이션하는 표준 방법이 있기를 바랬습니다. – jontro