Java 从spring使用HSQLDB时的Blob大小限制
我正在使用HSQLDB进行测试。数据库是通过扫描模型从spring创建的。其中一个模型是包含附件的消息(从而产生lob)。尝试使用附件保存邮件时,会导致:org.hsqldb.hsqleexception:data exception:string data,右截断。附件的最大容量只有4kb。有没有办法从spring配置hsql lob字段的大小限制?我确信这个异常是由附件引起的,因为当我评论这一行(添加附件)时,一切都很好 我的spring配置:Java 从spring使用HSQLDB时的Blob大小限制,java,spring,blob,hsqldb,lob,Java,Spring,Blob,Hsqldb,Lob,我正在使用HSQLDB进行测试。数据库是通过扫描模型从spring创建的。其中一个模型是包含附件的消息(从而产生lob)。尝试使用附件保存邮件时,会导致:org.hsqldb.hsqleexception:data exception:string data,右截断。附件的最大容量只有4kb。有没有办法从spring配置hsql lob字段的大小限制?我确信这个异常是由附件引起的,因为当我评论这一行(添加附件)时,一切都很好 我的spring配置: <bean id="transactio
<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>
我不知道这是否与你的问题有关,但是:
为什么要使用
字节[]
而不是字节[]
?有一个巨大的开销,却一无所获。我不知道有哪个库处理字节
对象数组。您应该将类型更改为字节[]
我不知道这是否与你的问题有关,但是:
为什么要使用
字节[]
而不是字节[]
?有一个巨大的开销,却一无所获。我不知道有哪个库处理字节
对象数组。您应该将类型更改为字节[]
字节数组不会自动映射到Lob。您可能需要将@Lob
注释添加到属性。字节数组不会自动映射到Lob。您可能需要将@Lob
注释添加到属性中。您可以发布有问题的模型定义吗?您确定它确实使用了BLOB吗?你能看到它生成的DDL吗?尝试将@Lob注释添加到属性中以使其显式。您可以发布有问题的模型定义吗?您确定它确实使用了BLOB吗?你能看到它生成的DDL吗?尝试将@Lob注释添加到属性以使其显式。模型是从mysql数据库自动生成的。我无法控制它使用什么类型。也就是说,我在必要时将Byte[]
更改为Byte[]
,但没有效果。@DanielCarabott这么认为,但值得一试。这些模型是从mysql数据库自动生成的。我无法控制它使用什么类型。也就是说,我在必要的地方将字节[]
改为字节[]
,但没有效果。@DanielCarabott这样认为,但在添加@Lob之后,一切都很好!值得一试!。现在我必须弄清楚如何告诉自动生成器添加@Lob
。谢谢添加@Lob后,一切正常!。现在我必须弄清楚如何告诉自动生成器添加@Lob
。谢谢
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;
}