2010-01-04 2 views
1

Grails 1.1.2 + MySQL에 문제가 있습니다.Map 필드에서 Grails가 MySQL에서 적절한 열 유형을 사용하도록하는 방법

내 도메인 클래스 뭔가 내가 응용 프로그램을 실행하면 Grails의 테이블 '뭔가'및 하위 테이블 'something_price_map'를 만들고 필드를

Map<String, Map<Integer, Integer>> priceMap 

가 포함되어 있습니다. 'something_price_map'는

BIGINT(20) price_map 
VARCHAR(255) price_map_idx 
TINYBLOB price_map_elt 

문제를 포함하다 I이 기입 된 때 열에 priceMap조차 'priceMap 같은 작은지도 데이터 : [EN : 100 : 4, 500 : 20, 600 : 24] '일 경우 데이터 크기가 255 바이트를 초과합니다.

Grails가 TINYBLOB 대신 MEDIUMBLOB 또는 BLOBK를 사용하도록 내부 맵 (Map)에 maxSize 제약 조건을 지정하는 방법이 있습니까?

Btw ... in-mem DB를 사용하면 모든 것이 잘 동작합니다.

답변

2

알고 계시 겠지만 도메인 클래스에는 mapping constraint이 있습니다. 그러나 문제가 너무 복잡하여 해당 기능을 사용할 수 없습니다.

그런 경우 도메인 클래스에 대해 explicit Hibernate mapping (hbm 파일을 통해)을 지정할 수 있습니다. 이것은 Hibernate의 완전한 유연성을 허용한다.

+0

그래, 그게 문제 야. 복잡해. 간단한지도 들어 maxSize 제약 조건을 사용할 수 있지만 내부지도 maxSize 지정해야합니다. hbm 파일을 보내 주셔서 감사합니다. 내가 더 나은 해결책을 찾지 못한다면, 나는 이것을 시도 할 것이다. –

관련 문제