[RESOLVIDO]Erro Spring

Bom dia.

Comecei a usar o Spring e estou com um problema.
Quando eu coloco algum relacionamento nas Classes ele não funciona, mas senão tiver relacionamentos funciona.
Devo colocar os relacionamentos no spring.xml?

Segue as classes:

package br.com.autocom.modelo;

import java.io.Serializable;
import java.util.Calendar;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;

@SequenceGenerator(name = "Cadastro_Sequencia", sequenceName = "Cadastro_Sequencia")
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class Cadastro implements Serializable{
	private static final long serialVersionUID = 1L;
	
	@Id
    @GeneratedValue(strategy=GenerationType.AUTO, generator="Cadastro_Sequencia")
	@Column(name="codigoCadastro")
	private Integer codigoCadastro;
	private String razaoSocial;
	private String nomeFantasia;
	private String endereco;
	private String cep;
	private String setor;
	private String complemento;
	private String numero;
	private String obs;
	private String cnpjCPF;
	private Calendar dataAtualizado;
	private Calendar dataCadastro;
	private Calendar dataSuspensao;
	private String email;
	private String InscRg;
	private String cidade;
	private String estado;
	private String telefone1;
	private String celular1;
	private String contato1;
	private String telefone2;
	private String celular2;
	private String contato2;
	
	@ManyToOne (targetEntity=br.com.autocom.modelo.UfCidade.class)  
	@JoinColumn(name="codigoEstadoCidade", nullable=false)  
	private UfCidade ufCidade;

//Getters and Setters omitidos
}

UfCidade.java

[code]
package br.com.autocom.modelo;

import java.io.Serializable;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;

@Entity
@SequenceGenerator(name = “EstadoCidade_Sequencia”, sequenceName = “EstadoCidade_Sequencia”)
public class UfCidade implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy=GenerationType.AUTO, generator="EstadoCidade_Sequencia")
@Column(name="codigoEstadoCidade")
private Integer codigoEstadoCidade;
private String estado;
private String municipio;

@OneToMany(cascade = {CascadeType.ALL}, mappedBy = "cadastro")  
@JoinColumn(name = "codigoCadastro")
private List<Cadastro> cadastro;

//Getters and Setters omitidos
}[/code]

spring.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
	   xmlns:tx="http://www.springframework.org/schema/tx"
	   xsi:schemaLocation="http://www.springframework.org/schema/beans
						   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
						   http://www.springframework.org/schema/tx
						   http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
						   http://www.springframework.org/schema/aop
						   http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
		
	<!-- Conexão com banco de dados -->
	<bean id="dataSource" class="br.com.autocom.config.Conexao" />
		
	<!-- Hibernate -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    	<property name="annotatedClasses">
    		<list>
    			<value>br.com.autocom.modelo.Cadastro</value>
    			<value>br.com.autocom.modelo.CadastroFornecedor</value>
    			<value>br.com.autocom.modelo.CadastroCliente</value>
    			<value>br.com.autocom.modelo.Categoria</value>
    			<value>br.com.autocom.modelo.Contas</value>
    			<value>br.com.autocom.modelo.Lancamentos</value>
    			<value>br.com.autocom.modelo.TipoLancamento</value>
    			<value>br.com.autocom.modelo.UfCidade</value>
    		</list>
    	</property>
    	<property name="hibernateProperties">
    		<props>
    			<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
    			<prop key="hibernate.show_sql">true</prop>  
    			<prop key="hibernate.hbm2ddl.auto">create-drop</prop> 			
    		</props>
    	</property>
    	<property name="dataSource" ref="dataSource" />
    </bean>

	<!-- Injeta uma sessão do hibernate -->
	<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
  		<property name="sessionFactory" ref="sessionFactory" />
	</bean> 
	 
	<!-- DAOs -->
    <bean id="cadastroFornecedorDAO" class="br.com.autocom.dao.CadastroFornecedorDAO">
    	<!-- Injeta esse objeto hibernateTemplate dentro do DAO -->
    	<property name="hibernateTemplate" ref="hibernateTemplate" />
    </bean>
</beans>

BeanFactory.java

package br.com.autocom.util;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class BeanFactory {

	private static ClassPathXmlApplicationContext ctx;

	static {
		ctx = new ClassPathXmlApplicationContext("br/com/autocom/config/spring.xml");
	}

	private BeanFactory() {
	}

	public static Object getBean(String beanName) {
		return ctx.getBean(beanName);
	}
	public static Object getBean(String beanName, Class classe) {
		return ctx.getBean(beanName, classe);
	}

}

Exception:

INFO: Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@2ad9ef: defining beans [dataSource,sessionFactory,hibernateTemplate,cadastroFornecedorDAO]; root of factory hierarchy
java.lang.ExceptionInInitializerError
	at br.com.autocom.controle.CadastrarFornecedorControle.<init>(CadastrarFornecedorControle.java:19)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at java.lang.Class.newInstance0(Unknown Source)
	at java.lang.Class.newInstance(Unknown Source)
	at com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:188)
	at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:102)
	at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:405)
	at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:267)
	at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:86)
	at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:67)
	at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
	at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:72)
	at org.apache.el.parser.AstValue.getTarget(AstValue.java:94)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:245)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:98)
	at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:148)
	at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
	at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:772)
	at javax.faces.component.UICommand.broadcast(UICommand.java:300)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:775)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1267)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [br/com/autocom/config/spring.xml]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: br.com.autocom.modelo.Cadastro.cadastro in br.com.autocom.modelo.UfCidade.cadastro
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1412)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:546)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:872)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423)
	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
	at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
	at br.com.autocom.util.BeanFactory.<clinit>(BeanFactory.java:10)
	... 45 more
Caused by: org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: br.com.autocom.modelo.Cadastro.cadastro in br.com.autocom.modelo.UfCidade.cadastro
	at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:576)
	at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:541)
	at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:43)
	at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1130)
	at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:324)
	at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1115)
	at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:717)
	at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1469)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1409)
	... 57 more

Estou meio perdido no Spring. ouço falar de tanta coisa sobre ele que parece que existe vários Springs. É isso mesmo?
Esse que estou usando para a persistência funciona perfeitamente, desde que não exista relacionamentos nas classes.

Como posso consertar esse erro? Vcs me recomendam algum tutorial?

Agradeço a ajuda!

Oi.

O seu tópico está como resolvido, você conseguiu resolver mesmo? Porquê eu estou passando pelo mesmo problema.
Qual a solução que você encontrou?

Obrigado

Apenas mudei os relacionamentos.

Segue as classes editadas:

Cadastro.java

package br.com.autocom.modelo;

import java.io.Serializable;
import java.util.Calendar;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;

@SequenceGenerator(name = "Cadastro_Sequencia", sequenceName = "Cadastro_Sequencia")
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class Cadastro implements Serializable{
	private static final long serialVersionUID = 1L;
	
	@Id
    @GeneratedValue(strategy=GenerationType.AUTO, generator="Cadastro_Sequencia")
	@Column(name="codigoCadastro")
	private Integer codigoCadastro;
	private String razaoSocial;
	private String nomeFantasia;
	private String endereco;
	private String cep;
	private String setor;
	private String complemento;
	private String numero;
	private String obs;
	private String cnpjCPF;
	private Calendar dataAtualizado;
	private Calendar dataCadastro;
	private Calendar dataSuspensao;
	private String email;
	private String InscRg;
	private String telefone1;
	private String celular1;
	private String contato1;
	private String telefone2;
	private String celular2;
	private String contato2;
	
	@ManyToOne
	@JoinColumn(name = "codigoEstadoCidade") 
	private UfCidade ufCidade;

//Getters and Setters omitidos 
}

UfCidade.java

package br.com.autocom.modelo;

import java.io.Serializable;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;

@Entity
public class UfCidade implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@Column(name="codigoEstadoCidade")
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private Integer codigoEstadoCidade;
	private String municipio;
	private String estado;
	
	@OneToMany(cascade = {CascadeType.ALL}, mappedBy = "codigoCadastro")  
	private List<Cadastro> cadastro;

        //Getters and Setters omitidos 

Veja se isso te ajuda. Não sei se é a melhor forma, mas comigo agora está funcionando normalmente.