JPA 1、Struts2.3.1、Google-App-Enging 1.7.0を使用しています
私のコミックでは、ゲッターとセッターを使用して以下のプロパティがあります。
@ManyToOne(fetch=FetchType.LAZY, targetEntity=User.class)
private User user = null;
JPAクエリの私の方法:
public Comics readComics(int random, String url){
EntityManager em = EMF.get().createEntityManager();
Comics comics = null;
try{
Query q = em.createNamedQuery("Comics.getComics");
q.setParameter("random", random);
q.setParameter("url", url);
comics = (Comics) q.getSingleResult();
} catch(NoResultException ex){
System.out.println("ERROR CATCHED: " + ex.getMessage());
comics = null;
} finally{
em.close();
}
return comics;
}
私の見解では、私は持っています:
<s:property value="comics.user.userName"/>
userName
その場合はアクセスできませんが、エンティティマネージャが閉じていない場合userName
は表示されます。
正しいものはどれでしょう?削除してもよろしいem.close()
ですか?
=======================
を使用しBeanUtils.copyProperties
て、以下のコードも試しました:
Comics emComics = (Comics) q.getSingleResult();
BeanUtils.copyProperties(comics, emComics);
BeanUtils.copyProperties(comics.getUser(), emComics.getUser());
正しい使い方copyProperties
ですか?削除BeanUtils.copyProperties(comics.getUser(), emComics.getUser());
すると、再び表示されなくなりますuser