2010-06-02 4 views
1

Java EJB의 EntityManager가 소비자의 데이터를 업데이트하지 않습니다.EntityManager가 flush()에서 업데이트하지 않습니다.

소비자는 상점에 로그인하여 물건을 구입하고 쇼핑 기록을보고 싶어합니다. 모든 것이 표시되지만 마지막 구매는 표시됩니다. 그가 밖으로 로그 아웃하면 표시됩니다.

저는 JPA를 사용하여 구매/구매 (소비자에 매핑 됨)를 DB에 유지합니다. 이 세션에서 구매 한 항목을 찾을 수없는 것 같습니다.

코드 :

public Buys buyItem(Consumer c, int amount) { 
    Buys b = new Buys(); 
    b.setConsumerId(c); 
    b.setContent("DVD"); 
    b.setPrice(amount); 
    em.persist(b); 
    em.flush(); 
    return b; 
} 

public Collection getAllBuysFromUser(Consumer consumer) { 
    Collection<Buys> collection = consumer.getBuysCollection(); 
    return collection; 
} 

도움말!? 당신이 Customer 측면에 buysCollectionBuys 인스턴스를 추가 곳 ...

답변

2

을 트릭을하지 않습니다 플러시 당신은 CustomerBuys 사이에 양방향 one-to-many 연관을 갖고있는 것 같다하지만 난 볼 수 없습니다 .

public Buys buyItem(Consumer c, int amount) { 
    Buys b = new Buys(); 
    b.setConsumerId(c); 
    b.setContent("DVD"); 
    b.setPrice(amount); 
    c.getBuysCollection().add(b); 
    em.persist(b); 
    em.flush(); 
    return b; 
} 

을 그리고 implement equals (and hashCode) properly 확인 :이 같은 것을 볼 것으로 예상 것입니다.

1.2.6. Working bi-directional links을 확인하고 제안 된대로 방어 링크 관리 방법을 추가하는 것이 좋습니다.

관련 문제