개체 에 이미의 id 필드가 설정되어 있지 않으면 createOrUpdate
을 호출하면 안됩니다. ORMLite
이 데이터베이스에 존재하는지 여부를 결정하는 방법은 쿼리 별 ID를 수행하는 것입니다. 코드는 다음을 수행합니다.
ID id = extractId(data);
// assume we need to create it if there is no id <<<<<<<<<<<<<<<<<<<<<<<
if (id == null || !idExists(id)) {
int numRows = create(data);
return new CreateOrUpdateStatus(true, false, numRows);
} else {
int numRows = update(data);
return new CreateOrUpdateStatus(false, true, numRows);
}
이 부분을 설명하기 위해 javadocs를 확장합니다. 그들은 매우 약하다. 죄송합니다. 다음과 같이 업데이트했습니다 :
데이터베이스에 항목이없는 경우 만드는 편리한 방법입니다. ID는 데이터 인수에서 추출되고 ID 별 조회가 데이터베이스에서 작성됩니다. 동일한 ID를 가진 데이터베이스의 행이 있으면 데이터베이스의 모든 열이 data 매개 변수의 필드에서 업데이트됩니다. id가 null (또는 0 또는 다른 디폴트 값)이거나 데이터베이스에 존재하지 않으면 오브젝트가 데이터베이스에 작성됩니다. 이는 또한 데이터 항목에 정의 된 ID 필드가 있어야 함을 의미합니다.
굉장! 이것이 행동이라고 의심하기 시작했습니다. 약간의 빛을 흘려 주셔서 감사합니다. – Quentamia
사실 OP가 새로운 삽입물을 얻는 데 필요한 기본값에 대해 약간의 빛을 흘리기 위해 +1하는 동작이 필요합니다. :)! – AgentKnopf
'generatedId = true' 데이터베이스 필드 주석이있는 컬럼은 어떻습니까? 또한 항상 데이터베이스에 새 항목을 만듭니다. ['Bug # 173'] (http://sourceforge.net/p/ormlite/bugs/173/)을보십시오. – user2784435