Atualização do banco de dados com o spring

2 respostas
zorba
bom dia pessoal :D tenho uma classe que le meu xml e atualiza meu banco de dados. a estrutura esta assim: appContext-hibernate.xml
<!-- Cria um pool de conexões com o banco -->
	<bean id="pooledDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
		<property name="user" value="postgres"/>
		<property name="password" value="adminadmin"/>
		<property name="driverClass" value="org.postgresql.Driver"/>
		<property name="jdbcUrl" value="jdbc:postgresql://127.0.0.1:5432/athus"/>
		<property name="initialPoolSize" value="50"/>
		<property name="maxPoolSize" value="1000"/>
		<property name="minPoolSize" value="20"/>
		<property name="checkoutTimeout" value="10000"/>
		<property name="acquireIncrement" value="1"/>
		<property name="acquireRetryAttempts" value="50"/>
		<property name="maxIdleTime" value="1800"/>
		<property name="maxStatements" value="50"/>
	</bean>
	
	<bean id="defaultLobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler" />
	
	<!-- SessioFactory de sessões com o banco -->
	<bean id="sessionFactory" class="br.com.athus.factory.AthusFactoryBean" destroy-method="destroy">
		<property name="dataSource" ref="pooledDataSource" />
		<property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration" />
		<property name="configLocation" value="classpath:br/com/athus/hibernate.cfg.xml" />
		<property name="lobHandler" ref="defaultLobHandler" />
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.current_session_context_class">thread</prop>
				<prop key="hibernate.generate_statistics">true</prop>
				<prop key="hibernate.bytecode.use_reflection_optimizer">true</prop>
				<prop key="hibernate.format_sql">true</prop>
				<prop key="hibernate.transaction.flush_before_completion">true</prop>
				<prop key="hibernate.transaction.factory_class">
					org.springframework.orm.hibernate3.SpringTransactionFactory</prop>
				<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
				
				<!-- Atualiza o banco ao iniciar o sistema -->
				<prop key="hibernate.hbm2ddl.auto">update</prop>
			</props>
		</property>
	</bean>
minha classe que le o xml e atualiza o banco:
public static void main(String[] args) {
		ApplicationContext path = 
			new FileSystemXmlApplicationContext(
					System.getProperty("user.dir") + "/WebContent/WEB-INF/applicationContext-hibernate.xml");
		
		AthusFactoryBean sf = (AthusFactoryBean) path.getBean("&sessionFactory");
		AnnotationConfiguration cfg = (AnnotationConfiguration) sf.getConfiguration();
		
		SchemaUpdate se = new SchemaUpdate(cfg);
		se.execute(true, true);
	}
mas ao executar a classe, acontece isso:
ERROR [main] (SchemaUpdate.java:222) - could not complete schema update
org.hibernate.HibernateException: No local DataSource found for configuration - 'dataSource' property must be set on LocalSessionFactoryBean
	at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.configure(LocalDataSourceConnectionProvider.java:49)
	at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:137)
	at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:79)
	at org.hibernate.tool.hbm2ddl.ManagedProviderConnectionHelper.prepare(ManagedProviderConnectionHelper.java:51)
	at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:168)
	at br.com.athus.util.database.AtualizarDB.main(AtualizarDB.java:21)
alguem ja passou por isso? abraços

2 Respostas

lelodois

Acho que trocou o nome
de:

&lt;bean id="pooledDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"  destroy-method="close"&gt;

Correto seria:

&lt;bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"  destroy-method="close"&gt;

:slight_smile:

Estou enganado, a referencia está correta… foi mal.

zorba

andei lendo, em alguns casos parecer ser um bug (tem ticket aberto no jira) mas dizem que ja foi resolvido. aqui não foi resolvido aieuhaiuea

Criado 13 de agosto de 2010
Ultima resposta 13 de ago. de 2010
Respostas 2
Participantes 2