Boa noite pessoal, sou novo no fórum e gostaria de ter uma ajuda de vocês. Estou trabalhando com Hibernate e postgres
Criei as seguintes classes
@Entity
@SequenceGenerator(name = "user_userid_seq",
sequenceName = "user_userid_seq",
allocationSize = 1, initialValue = 1)
@Table(name="USER")
public class User implements Serializable{
private Integer userId;
private Profile profile;
@OneToOne(fetch = FetchType.LAZY, mappedBy = "user")
public Profile getProfile() {
return profile;
}
public void setProfile(Profile profile) {
this.profile = profile;
}
@Id
@Column(name="USERID", nullable=false)
@GeneratedValue(generator="user_userid_seq")
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
}
@Entity
@Table(name="PROFILE")
public class Profile implements Serializable {
private Integer profileId;
private User user;
private Set <Abuse> abuses;
@OneToOne(fetch = FetchType.LAZY)
@PrimaryKeyJoinColumn
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@GenericGenerator(name = "generator", strategy = "foreign",
parameters = @Parameter(name = "property", value = "user"))
@Id
@GeneratedValue(generator = "generator")
@Column(name = "PROFILEID", unique = true, nullable = false)
public Integer getProfileId() {
return profileId;
}
public void setProfileId(Integer profileId) {
this.profileId = profileId;
}
@OneToMany(fetch=FetchType.EAGER, mappedBy = "profile")
public Set<Abuse> getAbuses() {
return this.abuses;
}
public void setAbuses(Set<Abuse> abuses) {
this.abuses = abuses;
}
}
@Entity
@SequenceGenerator(name = "news_newsid_seq",
sequenceName = "news_newsid_seq",
allocationSize = 1, initialValue = 1)
@Table(name = "POST")
public class Post implements Serializable{
private Integer postId;
private Set<Abuse> abuses;
@Id
@Column(name = "POSTID", unique = true, nullable = false)
@GeneratedValue(generator="news_newsid_seq")
public Integer getPostId() {
return postId;
}
public void setPostId(Integer postId) {
this.postId = postId;
}
@OneToMany(fetch=FetchType.EAGER, cascade=CascadeType.ALL, mappedBy = "post")
public Set<Abuse> getAbuses() {
return this.abuses;
}
public void setAbuses(Set<Abuse> abuses) {
this.abuses = abuses;
}
}
@Entity
@Table(name = "ABUSE_PROFILE_POSTS")
@SequenceGenerator(name = "abuse_profile_news_abuse_id_seq",
sequenceName = "abuse_profile_news_abuse_id_seq",
allocationSize = 1, initialValue = 1)
public class Abuse implements Serializable{
private Integer abuseId;
private Post post;
private Profile profile;
@Id
@Column(name = "ABUSE_ID", unique = true, nullable = false)
@GeneratedValue(generator="abuse_profile_news_abuse_id_seq")
public Integer getAbuseId() {
return abuseId;
}
public void setAbuseId(Integer abuseId) {
this.abuseId = abuseId;
}
@ManyToOne
@JoinColumn (name = "POSTID", nullable=false)
public Post getPost() {
return post;
}
public void setPost(Post post) {
this.post= post;
}
@ManyToOne
@JoinColumn (name = "PROFILEID", nullable=false)
public Profile getProfile() {
return profile;
}
public void setProfile(Profile profile) {
this.profile = profile;
}
}
Omiti os construtores das classes para o post não ficar muito longo.
Reparem que a classe Abuse é uma classe de relacionamento entre Profile e Post, e Profile e User tem um relacionamento de 1 para 1.
Quando tento usar esse método abaixo de uma classe DAO
public User getUser(User user){
Session session = HibernateUtil.getSessionFactory().openSession();
try {
session.beginTransaction();
Query query = session.createQuery("FROM User WHERE userId = :id");
query.setParameter("id", user.getUserId());
List list = query.list();
if (!list.isEmpty())
return (User) list.get(0);
else
return null;
} catch (HibernateException e) {
System.out.println("Problemas ao buscar um usuário específico.");
e.printStackTrace();
session.getTransaction().rollback();
} finally {
session.close();
}
return null;
}
é disparado o seguinte erro:
org.hibernate.AssertionFailure: null identifier
org.hibernate.engine.spi.EntityKey.<init>(EntityKey.java:69)
org.hibernate.internal.AbstractSessionImpl.generateEntityKey(AbstractSessionImpl.java:245)
org.hibernate.loader.Loader.extractKeysFromResultSet(Loader.java:725)
org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:638)
org.hibernate.loader.Loader.doQuery(Loader.java:853)
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:292)
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:262)
org.hibernate.loader.Loader.loadEntity(Loader.java:1976)
org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:82)
org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:72)
org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3720)
org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:458)
org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:427)
org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:204)
org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:260)
org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:148)
org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1079)
org.hibernate.internal.SessionImpl.internalLoad(SessionImpl.java:1006)
org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:613)
org.hibernate.type.EntityType.resolve(EntityType.java:441)
org.hibernate.engine.internal.TwoPhaseLoad.doInitializeEntity(TwoPhaseLoad.java:168)
org.hibernate.engine.internal.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:134)
org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:998)
org.hibernate.loader.Loader.doQuery(Loader.java:877)
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:292)
org.hibernate.loader.Loader.doList(Loader.java:2381)
org.hibernate.loader.Loader.doList(Loader.java:2367)
org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2197)
org.hibernate.loader.Loader.list(Loader.java:2192)
org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:470)
org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:355)
org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:195)
org.hibernate.internal.SessionImpl.list(SessionImpl.java:1248)
org.hibernate.internal.QueryImpl.list(QueryImpl.java:101)
com.indicibus.persistence.UserPersistense.getUser(UserPersistense.java:61)
com.indicibus.control.SubmitAbuseControl.userExists(SubmitAbuseControl.java:127)
com.indicibus.control.SubmitAbuseControl.submitAbuseControl(SubmitAbuseControl.java:161)
com.indicibus.control.SubmitAbuseControl.processRequest(SubmitAbuseControl.java:44)
com.indicibus.control.SubmitAbuseControl.doGet(SubmitAbuseControl.java:49)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
Alguém, por favor, poderia me dizer qual o problema. Já tentei de tudo e vasculhei em toda parte e não consigo ver o erro e muito menos encontrar algo similar na web.
Desde já agradeço.