2013-06-30 2 views
0

저는 스칼라 스퀘어 (스칼라 2.10 버전 0.9.6-RC1)를 사용하고 모델을 H2 데이터베이스로 직렬화하려고합니다.squeryl - 데이터베이스에 bigDecimal 저장

내 모델 클래스에는 일부 문자열 필드와 일부 BigDecimal 유형 (scala.BigDecimal)이 있습니다.

나는 unfortunatelly squeryl 항상 열 "MULTPZ DECIMAL(20, 16) NOT NULL": "1000000.0000000000000000 (23)";

너무 긴 값으로 나 잎, 이는 BigDecimal를 너무 작은 필드를 만들고, 내 모델 클래스에서 Schema.create와 데이터베이스 스키마를이 버그의 일종에 작성 squeryl? 원래 값은 "1000000.0000"이며 BigDecimal로 정확하게 파싱됩니다.

나는 위의 상황을 테스트 한, 나는 "DECIMAL(20, 20)"로하고 "1000000.00000000000000000000 (27)"

답변

3

가장 쉬운 수정이 스키마에서 defaultSizeOfBigDecimal 메소드를 오버라이드 (override)하는 것입니다 삽입을 시도 squeryl 경우에 정의 된 필드를 별도의 테이블을 만들었습니다. BigDecimal을 저장하는 숫자 열의 길이와 배율을 포함하는 튜플을 반환합니다. 또한 @Column 주석을 사용하여 필드 당 값을 설정할 수 있습니다.

+0

위대한 작품입니다. 내가 시도한 첫 번째 일은 그것을 설정하고 기존 데이터베이스와 함께 코드를 사용하는 것이었지만 작동하지 않았습니다. 그런 다음 스키마를 삭제하고 defaultSizeOfBigDecimal 세트로 다시 작성했습니다. 왜 그런 행동 ?? –

+0

Squeryl은 스키마를 처리하지 않습니다. 그것을 성취하기위한 하나의 방법 만은 아닙니다. Squeryl 목록을 검색하면 외부 라이브러리에 대한 더 많은 정보와 제안 사항을 찾을 수 있습니다. –

+0

그러나 이것은 초기 스키마 생성이었습니다. 나는 신선한 db 스키마를 만들고 새로운 insert가 즉시 실패했다. –