Tenho uma tabela de pessoa e ligo ela com uma tabela pessoa_cliente que seria uma continuação dos dados da pessoa.
Uma informação importante: Em meu banco todas as tabelas tem um campo que define a que empresa este registro pertence.
Por esse motivo quando gero o mapeamento do Hibernate ele cria uma classe PessoaPK uma PessoaClientePK e assim por diante.
O Problema é que quando tento pegar um registro qualquer que se ligue à pessoa(Que são quase todas as tabelas) recebo o exception a seguir:
Exception in thread "main" org.hibernate.PropertyAccessException: exception getting property value with CGLIB (set hibernate.cglib.use_reflection_optimizer=false for more info) getter of data.sistema.PessoaClientePK.?
at org.hibernate.tuple.PojoComponentTuplizer.getPropertyValues(PojoComponentTuplizer.java:89)
at org.hibernate.type.ComponentType.getPropertyValues(ComponentType.java:307)
at org.hibernate.type.ComponentType.getHashCode(ComponentType.java:158)
at org.hibernate.engine.EntityKey.generateHashCode(EntityKey.java:103)
at org.hibernate.engine.EntityKey.<init>(EntityKey.java:47)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:76)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:862)
at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:830)
at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:266)
at org.hibernate.type.EntityType.resolve(EntityType.java:303)
at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:116)
at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:842)
at org.hibernate.loader.Loader.doQuery(Loader.java:717)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
at org.hibernate.loader.Loader.loadEntity(Loader.java:1785)
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:47)
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:41)
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:2730)
at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:365)
at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:346)
at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:123)
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:161)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:87)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:862)
at org.hibernate.impl.SessionImpl.load(SessionImpl.java:781)
at org.hibernate.impl.SessionImpl.load(SessionImpl.java:774)
at sistema.Splash.carregaSistema(Splash.java:199)
at sistema.Splash.initialize(Splash.java:68)
at sistema.Splash.<init>(Splash.java:56)
at sistema.Main.getSplash(Main.java:49)
at sistema.Main.main(Main.java:32)
Caused by: java.lang.ClassCastException: data.sistema.PessoaPK
at data.sistema.PessoaClientePK$$BulkBeanByCGLIB$$f5fc04fb.getPropertyValues(<generated>)
at net.sf.cglib.beans.BulkBean.getPropertyValues(BulkBean.java:48)
at org.hibernate.tuple.PojoComponentTuplizer.getPropertyValues(PojoComponentTuplizer.java:86)
... 30 more
Não consigo entender oque ocorre.
Esse exception é disparado no primeiro “load” do codigo a seguir:
//Só para pegar o primeiro session oque força ele a mapear.
HibernateUtility.getSession();
//Tento pegar um PessoaUsuario, e é aqui que da o exception.
HibernateUtility.getSession().load(PessoaUsuario.class, new PessoaUsuarioPK(1L, 1L));
HibernateUtility.getSession().load(Empresa.class, 1L);