2012-05-15 2 views
0

У меня есть отношение «один ко многим» (профиль к сообщению). Я попытался сохранить сообщение, принадлежащее определенному пользователю/профилю. Что не так с кодом ниже?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. 
+0

И объект, возвращаемый из вашего имени запроса в каком состоянии объекта? Или это нулевой объект? Очевидно, журнал сообщает вам, что происходит – DataNucleus

ответ

1

Может быть, потому что вы не имеете "Id", первичный ключ, определенный в вашем Объект профиля? Или не установлено какое-либо значение при создании определенного профиля?

Также проверьте правильность отношений между объектами профиля и сообщения.

jpa OneToMany & ManyToOne

+0

@JR Galia: Маленький запрос, это поможет другим, если вы кратко расскажите здесь, что это была проблема и как вы ее разрешили. – mhan

Смежные вопросы