2013-01-19 2 views
0

ORMlite 정의 된 데이터베이스의 기본 키를 변경하는 방법이 있습니까? ,ORMlite 기본 키를 변경

은 내가

@DatabaseField(columnName = NAME_FIELD_NAME, canBeNull = false, id = true) 
private String name = ""; 

와 클래스 사용자가 있어요 그리고 난 DAO.querybyid(String name);

로를 조회하지만 난이 데이터베이스에 이름을 변경하려고 할 때, 그것은 나에게 경고를 제공하지 않습니다 ORMLite가 테이블 열을 변경하고 인덱스를 제거한 다음 열을 업데이트하고 인덱스를 다시 배치합니까?

ㅎ 그렇게 생각하지 않습니까? 그래서 해결 방법을 필요 :(뿐만 아니라 DAO.querybyid() 장점은 문자열에 의해 사용자 싶어.

누군가가 나를 도울 수 있습니까?

답변

1

테이블 컬럼을 변경 ORMLite 및 인덱스를 제거합니다 다음 열을 업데이트하고 다시 인덱스를 배치

을 난 당신이 dao.rawExecute(...) methodORMLite이 문을 마법 아무것도하지 않는 사용하여 스키마 변경한다고 가정? -?를 그냥 기본 데이타베이스에 보낼 경우 그래서. 당신은 필드 name을 요구하고 있지만 그것은 t라는 이름으로 바뀌 었습니다. o id이면 DAO는 데이터베이스에 해당하지 않으므로 작동하지 않습니다. "SELECT name, ... FROM ..."을 수행하고 SQL 오류가 발생합니다.

당신이 무엇을 수 있습니까합니까 클래스의 두 가지 버전이 있습니다. 첫 번째 필드에는 "이전"필드 이름이 있고 새 필드에는 "새"필드 이름이 있습니다. 그런 다음 스키마를 업데이트해야 함을 감지하면 원시 ALTER SQL 문을 발행 한 다음 새 버전의 클래스에 해당하는 DAO를 사용할 수 있습니다.

+0

내가 스키마를 재구성하고 고유 한 ID를 만들고 user.name에 대한 내 쿼리를 처리하는 추가 함수를 만들 것이라고 생각합니다. 그럴 일은 없을 것입니다. D – Fl0R1D3R

+0

소리가 @KyuuSung입니다. 이를 달성하기 위해 dao.queryForEq()를 사용할 수 있습니다. – Gray

관련 문제