Problema Spring + Hibernate Annotations - Unknown entity:

3 respostas
breffo

…boa tarde a todos:
…estou tentando rodar Spring 2.0 + HiberntaAnnotations, a aplicação é inicializada sem maiores problemas no entanto na hora de realizar um INSERT (Utilizando o HibernateDaoSupport do spring) ele não reconhece as CLASSES anotadas e mapeadas no hibernate.cfg !!!

<mapping class="br.teste.entidade.EntidadeTO"/>

Detalhe: se eu colocar um arquivo hbn.xml dentro do mesmo diretorio e mapear um com um:

<mapping resource="br/teste/entidade/EntidadeTO.hbm.xml"/>

…funciona perfeitamente, se alguem puder dar alguma ajuda:
segue minhas configurações:

hibernate.cfg.xml

<hibernate-configuration>
 <session-factory>
	<property name="dialect">org.hibernate.dialect.SQLServerDialect
        </property>
	<property name="show_sql">true</property>
        <property name="generate_statistics">true</property>
        <property name="cglib.use_reflection_optimizer">true</property>
        <property name="cache.provider_class">org.hibernate.cache.HashtableCacheProvider
        </property>
        <property name="current_session_context_class">thread
        </property>
        
        <!-- ### SO FUNCIONA QDO "ressource"NAO ESTA COMENTADO #### -->
	<mapping class="br.teste.entidade.EntidadeTO"/>
	<!--mapping resource="br/teste/entidade/EntidadeTO.hbm.xml"/ -->
		
	</session-factory>
</hibernate-configuration>

…esse é o trecho do ApplicationContext.xml que configura o hibernate:
ApplicationContext.xml

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver" />
		<property name="url" value="jdbc:jtds:sqlserver://192.168.200.253/spring;lobBuffer=1024000" />
		<property name="username" value="teste" />
		<property name="password" value="teste" />
	</bean>

<!-- ### SESSION FACTORY ### -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<!-- Configuração através de annotations -->
		<property name="configurationClass"	value="org.hibernate.cfg.AnnotationConfiguration" />
		<!-- Local onde está o arquivo hibernate.cfg.xml -->
		<property name="configLocation" value="classpath:hibernate.cfg.xml" />
		
	</bean>

…alguma idéia ??? …qualquer ajuda é muito bem vinda !!! :cry:

3 Respostas

David

No applicationContext.xml, em vez de usar LocalSessionFactoryBean, use:

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
breffo

…achei a solução, putz, é nessas horas que da vontade de ir vender sanduiche ou qualquer coisa parecida…
da uma olhada na entidade abaixo

Entidade

package br.teste.entidade;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import org.hibernate.annotations.Entity;
import javax.persistence.Transient;

import org.hibernate.annotations.Entity;


/**
 * @version $Revision: $, $Date: 01/08/2007
 */

@SuppressWarnings("serial")
@Entity
@Table(name="TESTE")
public class TesteTO  {

	private Long id;
	private String login;
	private String senha;
	private String nome;
	
	
	@Id
	@Column(name="id_teste", nullable=false)
	@GeneratedValue(strategy=GenerationType.AUTO)
	public Long getId() {
		return id;
	}

	...
          get's e set's com respectivas anotações.
	
}

pessoas com o import

import org.hibernate.annotations.Entity;

não funciona, acho que o auto-complete do eclipse me puxou o tapete … foi so mudar para

import javax.persistence.Entity;

…que funcionou blz …

…algum comentário a respeito ??? …valeu !!!

Abdon

Comentario:

As annotations do hibernate NÃO substituem as annotations da espec JPA, elas apenas as complementam em casos especificos.

Criado 3 de agosto de 2007
Ultima resposta 3 de ago. de 2007
Respostas 3
Participantes 3