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.