2012-01-15 8 views
0

grails 프로젝트에 jscience 물리량을 저장하려고합니다. 나는 최대 절전 모드와 기본값을 사용하고있다. 그러나 나는 일반적인 적용 성을 가진 무언가를 선호 할 것이다. 내가 특별히 미사에 관심 그리고 난 내 방식을 가질 수 있다면 난 그냥 지금처럼 도메인 개체의 라인을 만들 것입니다 :Grails : jScience 금액 저장 방법

MyDomainClass { 
    Amount<Mass> weight 
} 

을하지만이 오류 제공합니다 org.hibernate :

에 의해 발생합니다. exception.DataException : 삽입 할 수 없습니다. [project.MyDomainClass] $ Proxy10.saveOrUpdate (알 수없는 소스) ... 27 more 발생 원인 : com.mysql.jdbc.MysqlDataTruncation : 데이터 잘림 : 데이터가 너무 길어서 ' weight 'onat com.mysql.jdbc.MysqlIO.checkErrorPacket (MysqlIO.java:3601) at com.mysql.jdbc.MysqlIO.checkErrorPa cket (MysqlIO.java:3535) at com.mysql.jdbc.MysqlIO.sendCommand (MysqlIO.java:1989) at com.mysql.jdbc.MysqlIO.sqlQueryDirect (MysqlIO.java:2150) at com.mysql. com.mysql.jdbc.PreparedStatement.executeUpdate (PreparedStatement.java:2415) 에서 com.mysql.jdbc.PreparedStatement.executeInternal (PreparedStatement.java:2119) 에서 jdbc.ConnectionImpl.execSQL (ConnectionImpl.java:2626)에서 com.mysql.jdbc.PreparedStatement.executeUpdate (PreparedStatement.java:2333) org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate에서 com.mysql.jdbc.PreparedStatement.executeUpdate (PreparedStatement.java:2318) 에서 (DelegatingPreparedStatement. java : 105) ... 28 더

,210

난 아무것도 그, 또는 더 나은 방식에 문제가 있나요

def weight 

로 변경하여이 오류를 해결할 수 있습니까? 혼합 단위를 다루는 장점이있는 데이터베이스 솔루션이 있습니까? 모든 것이 단위 테스트에 관한 것이기 때문에 이것을 인터넷 검색은 매우 실망 스럽습니다.

답변

1

def weight과 함께 오류 메시지를 숨겨서 필드를 비 영구적으로 만 만들었습니다. 타입이 지정되지 않았기 때문에, Grails와 Hibernate는 그것을 유지하고 그것을 무시하는 방법을 모른다.

제 추측으로는 객체를 blob로 저장하고 있으며 기본 크기로는 너무 큽니다.하지만 원하는 것은 아닐 것입니다. 도메인 클래스에서 매핑하는 방법은 http://grails.org/doc/latest/guide/GORM.html#customHibernateTypes을 참조하십시오.

최대 절전 모드 문서에 Grails의 문서의 링크가 깨진 - 올바른 URL이 이미 정의 (배포판 또는 제 3 자로부터 중) 종류를 최대 절전 모드 수도 http://docs.jboss.org/hibernate/stable/core/manual/en-US/html/mapping.html#mapping-types-custom

jScience - 당신은 확인해야 자신의 docs.

+0

Burt, 언제나처럼 도움을 주셔서 감사합니다.하지만 내 앱은 이것을 def로 유지하는 것처럼 보입니다. save() 및 list()를 수행 한 다음 볼 수 있습니다. – Mikey

+1

'grails schema-export'를 유형을 지정하고 다시 차이를 보지 않고 실행합니다. 출력은 target/ddl.sql에 있습니다. –

+0

팁을 주셔서 다시 한번 감사드립니다. 또한, 내가 그것을 저장하고 list()로 다시 가져올 수 있다는 사실에도 불구하고 SQL에 저장하는 것이 잘못되었다고 생각됩니다. – Mikey