Olá pessoal,
Minha aplicação está dando essa exceção:
br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: org.hibernate.PropertyNotFoundException: Could not find setter for PK_id_versao on class br.com.senac.pi4.model.Versao
br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:96)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:93)
br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44)
br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91)
br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)
br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88)
O problema pelo que entendi é porque no banco o nome da coluna da tabela versao é PK_id_versao e o nome da coluna da tabela configuracao é FK_versao, porém o nome do atributo na classe Versao é id_versao e o nome do atributo na classe Configuracao é versao. Por isso eu não tenho getter nem setter para PK_id_versao nem para FK_versao. Vejam meu código:
na classe Versao
@Id
@GeneratedValue
@Column(name = "PK_id_versao", unique = true, nullable = false)
public int getId_versao() {
return id_versao;
}
na classe Configuracao
@ManyToOne
@JoinColumn(name = "FK_versao")
public Versao getVersao() {
return versao;
}
método no DAO
public List<Versao> listarVersoesPorVeiculo(int id_veiculo){
String sql = "SELECT v.* FROM versao v, veiculo_versao vv WHERE v.PK_id_versao = vv.FK_versao AND vv.FK_veiculo = " + id_veiculo;
List<Versao> versoes = sessao.createSQLQuery(sql).setResultTransformer(Transformers.aliasToBean(Versao.class)).list();
return versoes;
}
Tem como resolver isso sem alterar o nome das colunas no banco?
Também não tenho certeza se o problema é esse mesmo que eu desconfio, então se for outro me informem por favor. Tenho que fazer funcionar isso para entregar o projeto na facul daqui a poucos dias então se puderem me ajudar eu agradeço muito.
Obrigado.