[RESOLVIDO]Hibernate + Spring

2 respostas
Cledsonjr

Boa tarde.

Estou estudando Hibernate, fiz um projeto que estava funcionando normalmente.
Resolvi usar Spring no projeto e começou a acontecer erro nos relacionamentos.

O Erro:

29/08/2012 15:53:53 org.apache.catalina.core.AprLifecycleListener init INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre1.6.0_01\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre1.6.0_01/bin/client;C:/Program Files/Java/jre1.6.0_01/bin;C:/Program Files/Java/jre1.6.0_01/lib/i386;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;C:\Windows\system32\wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Program Files\Intel\DMIX;C:\Program Files\Microsoft SQL Server\100\Tools\Binn;C:\Program Files\Microsoft SQL Server\100\DTS\Binn;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE;C:\Program Files\Windows Live\Shared;C:\Program Files\TortoiseSVN\bin;C:\Program Files\Subversion\bin;C:\Program Files\SSH Communications Security\SSH Secure Shell;C:\Program Files\Common Files\Ahead\Lib\;C:\eclipseIndigo\eclipse; 29/08/2012 15:53:54 org.apache.tomcat.util.digester.SetPropertiesRule begin WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:MatriculaOnline' did not find a matching property. 29/08/2012 15:53:54 org.apache.coyote.AbstractProtocol init INFO: Initializing ProtocolHandler ["http-bio-8080"] 29/08/2012 15:53:54 org.apache.coyote.AbstractProtocol init INFO: Initializing ProtocolHandler ["ajp-bio-8009"] 29/08/2012 15:53:54 org.apache.catalina.startup.Catalina load INFO: Initialization processed in 419 ms 29/08/2012 15:53:54 org.apache.catalina.core.StandardService startInternal INFO: Starting service Catalina 29/08/2012 15:53:54 org.apache.catalina.core.StandardEngine startInternal INFO: Starting Servlet Engine: Apache Tomcat/7.0.22 29/08/2012 15:53:58 com.sun.faces.config.ConfigureListener contextInitialized INFO: Inicializando Mojarra 2.0.2 (FCS b10) para o contexto '/MatriculaOnline' 29/08/2012 15:53:59 com.sun.faces.spi.InjectionProviderFactory createInstance INFO: JSF1048: Anotações PostConstruct/PreDestroy presentes. Os métodos ManagedBeans marcados com essas anotações informarão as anotações processadas. 29/08/2012 15:53:59 org.primefaces.webapp.PostConstructApplicationEventListener processEvent INFO: Running on PrimeFaces 3.3 29/08/2012 15:53:59 org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["http-bio-8080"] 29/08/2012 15:53:59 org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["ajp-bio-8009"] 29/08/2012 15:53:59 org.apache.catalina.startup.Catalina start INFO: Server startup in 5329 ms 29/08/2012 15:54:01 org.springframework.context.support.AbstractApplicationContext prepareRefresh INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@26d8e6: startup date [Wed Aug 29 15:54:01 BRT 2012]; root of context hierarchy 29/08/2012 15:54:01 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions INFO: Loading XML bean definitions from class path resource [config/spring.xml] 29/08/2012 15:54:01 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1d2aa14: defining beans [dataSource,sessionFactory,hibernateTemplate,alunoDAO,composicaoDAO,escolaDAO,vagasDAO]; root of factory hierarchy 29/08/2012 15:54:01 org.springframework.jdbc.datasource.DriverManagerDataSource setDriverClassName INFO: Loaded JDBC driver: org.postgresql.Driver 29/08/2012 15:54:01 org.hibernate.cfg.annotations.Version <clinit> INFO: Hibernate Annotations 3.3.1.GA 29/08/2012 15:54:01 org.hibernate.cfg.Environment <clinit> INFO: Hibernate 3.2.5 29/08/2012 15:54:01 org.hibernate.cfg.Environment <clinit> INFO: hibernate.properties not found 29/08/2012 15:54:01 org.hibernate.cfg.Environment buildBytecodeProvider INFO: Bytecode provider name : cglib 29/08/2012 15:54:01 org.hibernate.cfg.Environment <clinit> INFO: using JDK 1.4 java.sql.Timestamp handling 29/08/2012 15:54:02 org.hibernate.cfg.AnnotationBinder bindClass INFO: Binding entity from annotated class: entidade.Composicao 29/08/2012 15:54:02 org.hibernate.cfg.annotations.EntityBinder bindTable INFO: Bind entity entidade.Composicao on table composicao 29/08/2012 15:54:02 org.hibernate.cfg.AnnotationBinder bindClass INFO: Binding entity from annotated class: entidade.Aluno 29/08/2012 15:54:02 org.hibernate.cfg.annotations.EntityBinder bindTable INFO: Bind entity entidade.Aluno on table aluno 29/08/2012 15:54:02 org.hibernate.cfg.AnnotationBinder bindClass INFO: Binding entity from annotated class: entidade.Escola 29/08/2012 15:54:02 org.hibernate.cfg.annotations.EntityBinder bindTable INFO: Bind entity entidade.Escola on table escola 29/08/2012 15:54:02 org.hibernate.cfg.AnnotationBinder bindClass INFO: Binding entity from annotated class: entidade.Vagas 29/08/2012 15:54:02 org.hibernate.cfg.annotations.EntityBinder bindTable INFO: Bind entity entidade.Vagas on table vagas 29/08/2012 15:54:02 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry destroySingletons INFO: Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1d2aa14: defining beans [dataSource,sessionFactory,hibernateTemplate,alunoDAO,composicaoDAO,escolaDAO,vagasDAO]; root of factory hierarchy 29/08/2012 15:54:02 org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path [/MatriculaOnline] threw exception [null] with root cause org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: entidade.Vagas.alunoLista[entidade.AlunoLista] at org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1068) at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:600) 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) 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 util.BeanFactory.<clinit>(BeanFactory.java:10) at controle.ComposicaoControle.<init>(ComposicaoControle.java:34) 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:71) at org.apache.el.parser.AstValue.getValue(AstValue.java:147) at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189) at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:102) at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:190) at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:178) at javax.faces.component.UISelectItems.getValue(UISelectItems.java:129) at org.primefaces.renderkit.InputRenderer.getSelectItems(InputRenderer.java:53) at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeMarkup(SelectOneMenuRenderer.java:68) at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeEnd(SelectOneMenuRenderer.java:62) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:878) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1620) at javax.faces.render.Renderer.encodeChildren(Renderer.java:168) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:848) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1613) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1616) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1616) at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:380) at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:126) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:127) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:313) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 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:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:304) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)

Vagas.java

package entidade;

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.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

@Entity
@SequenceGenerator(name = "vagasSequence", sequenceName = "vagasSequence")
@Table(name="vagas")
public class Vagas implements Serializable {
	private static final long serialVersionUID = 1L;


	@Id
    @GeneratedValue(strategy=GenerationType.AUTO, generator="vagasSequence")
	@Column(name="id_vagas")
	private int id;
	private int vagasTotal;
	private String turno;
	private int vagasRestantes;
	public Vagas() {}
	
	public Vagas(int id, int vagasTotal, String turno, int vagasRestantes, Escola escola) {
		
		this.id=id;
		this.vagasTotal=vagasTotal;
		this.turno=turno;
		this.vagasRestantes=vagasRestantes;
		this.escola=escola;
		
	}
	
    @ManyToOne(cascade=CascadeType.DETACH)
    private Composicao composicao;
    
    @ManyToOne(cascade=CascadeType.ALL)
    private Escola escola;
    
    @OneToMany(cascade = { CascadeType.PERSIST, CascadeType.ALL})
	@JoinColumn(name = "id_alunolista")
	private List<AlunoLista> alunoLista;
	

    
	public List<AlunoLista> getAlunoLista() {
		return alunoLista;
	}
	public void setAlunoLista(List<AlunoLista> alunoLista) {
		this.alunoLista= alunoLista;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public int getVagasTotal() {
		return vagasTotal;
	}
	public void setVagasTotal(int vagasTotal) {
		this.vagasTotal = vagasTotal;
	}
	public String getTurno() {
		return turno;
	}
	public void setTurno(String turno) {
		this.turno = turno;
	}
	public int getVagasRestantes() {
		return vagasRestantes;
	}
	public Composicao getComposicao() {
		return composicao;
	}
	public void setComposicao(Composicao composicao) {
		this.composicao = composicao;
	}
	public Escola getEscola() {
		return escola;
	}
	public void setEscola(Escola escola) {
		this.escola = escola;
	}

}

AlunoLista.java

package entidade;

import java.io.Serializable;

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.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

@Entity
@SequenceGenerator(name = "SEQ_ALUNOLISTA", sequenceName = "sequence_alunolista_id", allocationSize = 1)
@Table(name="alunolista")
public class AlunoLista implements Serializable {

	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_ALUNOLISTA")
	@Column(name = "id_alunolista")
	private int id;
	
	private int escolaOp1;
	private int escolaOp2;
	private int escolaOp3;
	
	private int escolaLista1;
	private int escolaLista2;
	private int escolaLista3;
	
	private int matriculado;

	@ManyToOne(cascade = CascadeType.DETACH)
	private Aluno aluno;

	@ManyToOne(cascade = CascadeType.DETACH)
	private Vagas vagas1;

	@ManyToOne(cascade = CascadeType.DETACH)
	private Vagas vagas2;
	
	@ManyToOne(cascade = CascadeType.DETACH)
	private Vagas vagas3;
	
	private boolean confirmarOp1;
	private boolean confirmarOp2;
	private boolean confirmarOp3;

	
	public boolean isConfirmarOp1() {
		return confirmarOp1;
	}

	public void setConfirmarOp1(boolean confirmarOp1) {
		this.confirmarOp1 = confirmarOp1;
	}

	public boolean isConfirmarOp2() {
		return confirmarOp2;
	}

	public void setConfirmarOp2(boolean confirmarOp2) {
		this.confirmarOp2 = confirmarOp2;
	}

	public boolean isConfirmarOp3() {
		return confirmarOp3;
	}

	public void setConfirmarOp3(boolean confirmarOp3) {
		this.confirmarOp3 = confirmarOp3;
	}

	public Vagas getVagas1() {
		return vagas1;
	}

	public void setVagas1(Vagas vagas1) {
		this.vagas1 = vagas1;
	}

	public Vagas getVagas2() {
		return vagas2;
	}

	public void setVagas2(Vagas vagas2) {
		this.vagas2 = vagas2;
	}

	public Vagas getVagas3() {
		return vagas3;
	}

	public void setVagas3(Vagas vagas3) {
		this.vagas3 = vagas3;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public int getEscolaOp1() {
		return escolaOp1;
	}

	public void setEscolaOp1(int escolaOp1) {
		this.escolaOp1 = escolaOp1;
	}

	public int getEscolaOp2() {
		return escolaOp2;
	}

	public void setEscolaOp2(int escolaOp2) {
		this.escolaOp2 = escolaOp2;
	}

	public int getEscolaOp3() {
		return escolaOp3;
	}

	public void setEscolaOp3(int escolaOp3) {
		this.escolaOp3 = escolaOp3;
	}

	public int getEscolaLista1() {
		return escolaLista1;
	}

	public void setEscolaLista1(int escolaLista1) {
		this.escolaLista1 = escolaLista1;
	}

	public int getEscolaLista2() {
		return escolaLista2;
	}

	public void setEscolaLista2(int escolaLista2) {
		this.escolaLista2 = escolaLista2;
	}

	public int getEscolaLista3() {
		return escolaLista3;
	}

	public void setEscolaLista3(int escolaLista3) {
		this.escolaLista3 = escolaLista3;
	}

	public int getMatriculado() {
		return matriculado;
	}

	public void setMatriculado(int matriculado) {
		this.matriculado = matriculado;
	}

	public Aluno getAluno() {
		return aluno;
	}

	public void setAluno(Aluno aluno) {
		this.aluno = aluno;
	}

}

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="config.Conexao" />
		
	<!-- Hibernate -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    	<property name="annotatedClasses">
    		<list>
    			<value>entidade.Composicao</value>
    			<value>entidade.Aluno</value>
    			<value>entidade.Escola</value>
    			<value>entidade.Vagas</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">update</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="alunoDAO" class="dao.AlunoDAO">
    	<!-- Injeta esse objeto hibernateTemplate dentro do DAO -->
    	<property name="hibernateTemplate" ref="hibernateTemplate" />
    </bean>
    <bean id="composicaoDAO" class="dao.ComposicaoDAO">
    <property name="hibernateTemplate" ref="hibernateTemplate" />
    </bean>
    <bean id="escolaDAO" class="dao.EscolaDAO">
    <property name="hibernateTemplate" ref="hibernateTemplate" />
    </bean>
    <bean id="vagasDAO" class="dao.VagasDAO">
    <property name="hibernateTemplate" ref="hibernateTemplate" />
    </bean>
</beans>

Por favor espero a ajuda de vcs, pois já tentei muita coisa e nada funcionou.

2 Respostas

Hebert_Coelho

Se você retirar o Spring, tudo volta a funcionar?

Cledsonjr

Eu tive que mudar os DAOS para funcionar com o Spring.

Seguindo esse modelo:

Antes estava meio confuso, e realmente ficou mais legível o código.
O projeto com o Spring é diferente do projeto sem String mas, porém o mapeamento continua o mesmo.

Esse mesmo mapeamento funciona sem o String sim.
E agora fica acusando esse erro.

org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: entidade.Vagas.alunoLista[entidade.AlunoLista]
Criado 29 de agosto de 2012
Ultima resposta 29 de ago. de 2012
Respostas 2
Participantes 2