У меня есть отношение «один ко многим» (профиль к сообщению). Я попытался сохранить сообщение, принадлежащее определенному пользователю/профилю. Что не так с кодом ниже?JPA От одного до многих отношений в Google App Engine
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.
И объект, возвращаемый из вашего имени запроса в каком состоянии объекта? Или это нулевой объект? Очевидно, журнал сообщает вам, что происходит – DataNucleus