OrmLite 5.0이있는 Postgres 9.4 데이터베이스에서 기본 키로 UUID를 사용하고 싶습니다.OrmLite 및 Postgres에서 UUID를 기본 키로 처리하는 방법은 무엇입니까?
같은 테이블보기 :
package test;
import java.util.UUID;
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.field.DataType;
import com.j256.ormlite.table.DatabaseTable;
@DatabaseTable(tableName = "test")
public class Test
{
@DatabaseField(generatedId = true, dataType = DataType.UUID_NATIVE)
private UUID id;
@DatabaseField
private String text;
public Test()
{}
public UUID getId()
{
return this.id;
}
public void setId(UUID id)
{
this.id = id;
}
public String getText()
{
return this.text;
}
public void setText(String text)
{
this.text = text;
}
}
내가 내 객체를 생성 :
Test t = new Test();
t.setText("testing");
myDao.create(t);
그러나 나는 다음과 같은 오류가 있습니다
관련 POJO로CREATE TABLE "test"(
"id" UUID PRIMARY KEY DEFAULT gen_random_uuid(),
"text" TEXT
)
org.postgresql.util.PSQLException: ERROR: column "id" is of type uuid but expression is of type character varying
Hint: You will need to rewrite or cast the expression.
좋아요, 의사는 OrmLite가 개체를 만들기 전에 (generatedId
덕분에) UUID를 생성하고 VARCHAR로 삽입하려고하면 실패합니다. 그러나 나는 내 애플 ID를 변경할 수 없도록하려면, 그래서 필드는 읽기 전용으로 만들 :
@DatabaseField(generatedId = true, dataType = DataType.UUID_NATIVE, readOnly = true)
대, 삽입 작업을하지만, 객체에 설정 한 ID가에서 생성 된 ID 아니다 데이터베이스 (OrmLite 생성 ID).
어떻게 작동합니까?
내가 UUID 외래 키를 가질 것이고 OrmLite가 그들을 처리해야하기 때문에 OrmLite로 네이티브 Postgres UUID 필드에 쓸 수 있어야합니다.
그것은 때문에'generatedId' 플래그없이 작동하지 않습니다, 생성 된 개체의 ID 필드가 자동으로 삽입 한 후 채워지지 않습니다. 게다가 OrmLite가 어떤 필드가 객체의 키인지 알지 못하는 사이에 OrmLite가 외래 키를 제대로 처리 할 수 있다고 생각하지 않습니다. (외래 키 관리가 필요합니다). – Val
(또한 OrmLite가 UUID Postgres 필드에 쓸 수 있어야합니다) – Val