Bem pessoal, no meu modelo de dados nos temos duas entidades: O perfil e o usuário.
1 usuário pode ter vários perfis.
1 usuário tambem pode ter um “perfil ativo”, que é o perfil que ele está usando atualmente.
O problema é: depois que eu mapeei o perfil ativo (activeProfile) no user.hbm.xml (usando many-to-one) eu comecei a ter NullPointerExceptions quando eu tento acessar usuários que tem perfil ativo setado. Esse erro magicamente nao acontece quando eu tento acessar usuários que nao tem perfil ativo (o seu PROFILE_ID é null).
Para inserir ou dar update nenhum desses erros acontecem.
Alguem aqui PELAMORDEDEUS sabe como eu conserto isso?
As tabelas e as classes que estou usando sao:
Table USER:
USER_ID: VARCHAR(10)
NAME: VARCHAR(20)
EMAIL: VARCHAR(20)
SERIAL_NUMBER:VARCHAR(20)
PROFILE_ID: INTEGER (this is the foreign key that references the active profile)
Table PROFILE:
PROFILE_ID: INTEGER
NAME: VARCHAR_20
USER_ID: VARCHAR(10) (This is the Foreign Key that indicutes whose profile is this).
My Classes:
public class User {
private String userID;
private String name;
private String email;
private String serialNumber;
private List profiles;
private Profile activeProfile;
//getters, setters, etc…
}
public class Profile {
private int profileID;
private String name;
//getters, setters, etc…
}
Can anyone here please help me?
Meus arquivos .hbm.xml:
<class name=User"
table=“USER” >
A Stacktrace da excepion:
Exception in thread “main” java.lang.NullPointerException
at org.hibernate.tuple.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:372)
at org.hibernate.persister.entity.AbstractEntityPersister.createProxy(AbstractEntityPersister.java:3121)
at org.hibernate.event.def.DefaultLoadEventListener.createProxyIfNecessary(DefaultLoadEventListener.java:232)
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:173)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:87)
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:177)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:87)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:862)
at org.hibernate.impl.SessionImpl.get(SessionImpl.java:799)
at org.hibernate.impl.SessionImpl.get(SessionImpl.java:792)
at com.ibm.extremeblue.callhandling.persistence.UserDAO.loadUser(UserDAO.java:19)
at com.ibm.extremeblue.callhandling.persistence.UserDAO.main(UserDAO.java:41)