:PostgreSQL 문자열을 텍스트 유형으로 마이그레이션하는 방법은 무엇입니까?
가 처음 내가 JPA에 아주 새로운이고 SQL 먼저, 다음 주석 클래스가 일치했다 썼다 작성되었습니다@Entity
@EqualsAndHashCode
class TextNote extends Serializable {
@Id Long id
String text
}
SQL. 다음은 내가 원하는 테이블처럼 PostgreSQL을에 최대 읽기는 듯 :이 일을
CREATE TABLE textnote (
id bigint NOT NULL,
text text
);
, 우리는이처럼 보였다 테이블을했다 :
id | text
-----+------------------------
837 | really long text here
는 내가 지금하고 싶은 것은 정확 JPA 엔티티는 다음과 같이합니다 :
@Entity
@EqualsAndHashCode
class TextNote extends Serializable {
@Id Long id
@Lob String text
}
을 @Lob
주석에게 JPA 공급자를 추가 (내 경우, 최대 절전 모드)의 경우에 나를 위해 올바르게 DDL을 생성 할 수 우리는 데이터베이스를 교환하려고합니다. 또한 텍스트 필드를 원하는대로 정확하게 문서화합니다. 나는 그것은 정말 긴 텍스트를 반환) 문자열 gettext에를 (사용하여 코드를 읽을 때와 같이 새로운 메모 괜찮
id | text
-----+------------------------
837 | 33427
: 이제 메모가 작성되는 때 나는 이런 식으로 뭔가를 참조하십시오. 솔직히 PostgreSQL이 text
유형을 구현하는 방법을 모르거나 이론적으로해야 할 필요는 없습니다. 그러나 우리의 프로덕션 데이터베이스에는 이미 @Lob
주석이없는 이전 코드를 사용하여 많은 노트가 저장되어 있습니다. 기존 데이터베이스에 새 코드를 실행하면 다음과 같은 문제가 발생하는 경우 기존 노트
org.springframework.dao.DataIntegrityViolationException: Bad value for type long : not a number this time; SQL [n/a]; nested exception is org.hibernate.exception.DataException: Bad value for type long : not a number this time
제대로 @Lob
및 text
유형을 사용하는 기존의 노트를 마이그레이션 할 SQL의 방법이? 미리 감사드립니다.
에서 큰 도움을 얻었다는 JPA 제공자는 내가 원하는하지 않은, 열 유형 VARCHAR있는 테이블을 생성합니다. '@ Lob'은 PostgreSQL'text' 타입을 생성합니다. 이것은 정확히 원하는 것입니다. 데이터베이스를 전환하려면 JPA 공급자를 사용하여 DDL을 생성해야합니다. '@ Lob '은 그렇게하기 위해 필요합니다. 이해가 되니? – Joe
'@ Lob'이'텍스트 '를 생성하고 있습니까? 문서와 게시 된 출력 모두'oid'를 생성 할 것이라고 생각합니다. Postgres가 큰 객체를 저장하는 방법입니다. 그것이 진정으로'text'라면, 단지 미스터리가 아닌 _text_를 볼 수 있습니다. – Eevee
나는'@ Lob' 어노테이션으로 출력 한 테이블을 다음과 같이 긍정적이다. [gist] (https://gist.github.com/4630173) – Joe