当然,对于Here,这个似乎很容易,但我在应用程序上下文中添加了以下内容......
<property name="dataSource">
<ref bean="dataSource"/>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.autocommit">false</prop>
</props>
</property>
<property name="annotatedClasses">
<list>
<value>com.gleason.gt.server.model.database.PlayListEntry</value>
<value>com.gleason.gt.server.model.database.MusicFile</value>
</list>
</property>
</bean>
我仍然得到同样的错误,任何想法?
UPDATE 添加服务/ DAO
@Repository("musicFileDao")
public class MusicFileDAOImpl extends GroovyTimeHibernateDAOSupport{
@Transactional()
public MusicFile getMusicFile(Integer i){
@SuppressWarnings("unchecked")
List<MusicFile> returnValue = (List<MusicFile>)getHibernateTemplate().find("from MusicFile where id=?",i);
if(returnValue.size()>0){
return returnValue.get(0);
}
return null;
}
}
@Service("musicFileService")
public class MusicFileService {
@Autowired
private MusicFileDAOImpl dao;
@Transactional
public MusicFile getMusicFile(Integer i){
return dao.getMusicFile(i);
}
}
@Lob
@Column(name="file")
private byte[] file;
答案 0 :(得分:2)
基本的是,一个大的对象是它自己的东西与bytea完全不同。如果要查找字节数组,请改用bytea。
大对象是一个独立的数据库实体,使用不同的接口保存,然后使用对象id引用。这需要两个SQL语句,因此在自动提交模式下不安全。对于非常大的字段,大对象是首选,原因有两个:
您可以在大型对象中存储两倍于bytea的内容,
大型对象带有流式界面,允许通过偏移等进行搜索。它们的运行方式更像文件而非数据库属性。
大对象在正确的位置非常有用,但它们有点不寻常。你有可能想要bytea。
答案 1 :(得分:0)
使用Spring Boot 2+ 有两种方法:
创建用于配置数据源的配置类,并更改Hikari行为
@Configuration
public class DataSourceConfiguration {
// (...) some @Value(s) (...)
@Bean
public DataSource getDataSource() {
HikariConfig config = new HikariConfig();
config.setDriverClassName(driverClassName);
config.setJdbcUrl(url);
config.setUsername(username);
config.setPassword(password);
// these are optional
config.setMinimumIdle(minumunIdle);
config.setMaximumPoolSize(maximunPoolSize);
config.setPoolName(poolName);
config.setConnectionTimeout(connectionTimeout);
config.setIdleTimeout(idleTimeout);
config.setMaxLifetime(maxLifetime);
// sets auto-commit to false
config.setAutoCommit(false);
return new HikariDataSource(config);
}
}
或在application.properties中,可以设置以下键/值:
spring.datasource.hikari.auto-commit=false