테스트를 위해 HSQLDB를 사용하고 있습니다. 데이터베이스는 봄부터 모델을 스캔하여 만들어집니다. 모델 중 하나는 첨부 파일을 포함하는 메시지입니다 (따라서 로브가 생깁니다). 첨부 파일이있는 메시지를 저장할 때 : org.hsqldb.HsqlException : 데이터 예외 : 문자열 데이터, 오른쪽 잘림. 첨부 파일은 최대 4kb입니다. 봄부터 hsql lob 필드의 크기 제한을 구성하는 방법이 있습니까? 나는 그 라인 (주석 첨부)이 모두 정상적으로 작동했기 때문에 예외가 첨부 파일에 의해 야기되었다고 확신한다. 스프링에서 HSQLDB를 사용할 때의 BLOB 크기 제한
내 스프링 구성 :<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager"
autowire="autodetect">
<property name="dataSource">
<ref local="hsqlDbDataSource"/>
</property>
</bean>
<bean id="persistenceManager"
class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
<bean class="org.springframework.beans.factory.config.PropertyOverrideConfigurer">
<property name="ignoreResourceNotFound">
<value>true</value>
</property>
<property name="location">
<!-- You may use file:d:/temp/db.properties etc here -->
<value>classpath:dispatcher.model.db.properties</value>
</property>
</bean>
<!-- HSQLDB DS -->
<bean id="hsqlDbDataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
<property name="url" value="jdbc:hsqldb:mem:dispatcher"/>
<property name="username" value="sa"/>
<property name="password" value=""/>
<property name="initialSize" value="20"/>
<property name="maxActive" value="10"/>
<property name="poolPreparedStatements" value="true"/>
<property name="maxOpenPreparedStatements" value="10"/>
</bean>
<!-- Hibernate SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="hsqlDbDataSource"/>
<property name="packagesToScan">
<list>
<value>com.company.project.dispatcher.model.**.*</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
<prop key="hibernate.generate_statistics">true</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.cache.use_second_level_cache">true</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="hibernate.cache.provider_class">net.sf.ehcache.hibernate.SingletonEhCacheProvider</prop>
<prop key="hibernate.hbm2ddl.auto">create-drop</prop>
</props>
</property>
</bean>
메시지 모델 :
public class FaxMessage extends Message implements IFaxMessage {
/** Serial Version UID. */
private static final long serialVersionUID = -558902226L;
/** Field mapping. */
private Long gatewayMessageId;
/** Field mapping. */
private Integer numberOfPages;
/** Field mapping. */
private Boolean pdfAttached;
/** Field mapping. */
private Byte[] pdfData;
/** Field mapping. */
private String subject;
/** Field mapping. */
private String tiffFileLocation;
...
/**
* Return the value associated with the column: pdfData.
* @return A Byte[] object (this.pdfData)
*/
@Basic(optional = true)
@Column(name = "pdf_data" )
public Byte[] getPdfData() {
return this.pdfData;
}
/**
* Set the value related to the column: pdfData.
* @param pdfData the pdfData value you wish to set
*/
public void setPdfData(final Byte[] pdfData) {
this.pdfData = pdfData;
}
감사
모델 정의를 게시 할 수 있습니까? – Nick
확실히 BLOB를 사용하고 있습니까? DDL이 생성되는 것을 볼 수 있습니까? @Lob 어노테이션을 속성에 추가하여 명시 적으로 만드십시오. – Nick