私は 1 対多の関係 (プロフィールからメッセージ) を持っています。特定のユーザー/プロフィールが所有するメッセージを保存しようとしました。以下のコードの何が問題になっていますか?
public Message createMessage(Message msg, String recepient) {
EntityManager em = EMF.get().createEntityManager();
UserAccess access = new UserAccess();
Profile user = access.searchUser(recepient);
msg.setUser(user);
em.getTransaction().begin();
em.persist(msg);
em.getTransaction().commit();
em.close();
return msg;
}
検索ユーザー メソッド
public Profile searchUser(String displayName){
EntityManager em = EMF.get().createEntityManager();
Profile user;
try{
Query q = em.createNamedQuery("Profile.searchByDisplayName");
q.setParameter("displayName", displayName);
user = (Profile) q.getSingleResult();
} catch(javax.persistence.NoResultException e){
user = null;
}
em.close();
return user;
}
以下のエラーが発生しました。
java.lang.IllegalStateException: Primary key for object of type Profile is null.