我需要你的帮助
我有一个 ManagedBean
@ManagedBean @SessionScoped public class ComponentController implements Serializable { private static final long serialVersionUID = 373631006594351707L; @EJB IComponentService componentService; @EJB IDocumentService documentService; private Component component; private DocumentEntity document; public String createAndClose() { componentService.save(component); FacesMessage msg = new FacesMessage("Component added.", null); FacesContext.getCurrentInstance().addMessage(null, msg); component = new Component(); return "components"; } public String saveAndClose() { componentService.update(component); FacesMessage msg = new FacesMessage("Component updated.", null); FacesContext.getCurrentInstance().addMessage(null, msg); component = new Component(); return "components"; } public String createView() { component = new Component(); return "create"; } }
我有一个像这样的通用 dao 服务
public abstract class GenericJpaService<T extends BaseEntity, ID extends Serializable> implements IGenericService<T, ID> { @PersistenceContext EntityManager em; private Class<T> persistentClass; public GenericJpaService() { } public GenericJpaService(Class<T> persistentClass) { this.persistentClass = persistentClass; } public Class<T> getPersistentClass() { return persistentClass; } public void setPersistentClass(Class<T> persistentClass) { this.persistentClass = persistentClass; } @Override public T save(T entity) { this.em.persist(entity); this.em.flush(); this.em.refresh(entity); Logger.getLogger(GenericJpaService.class.getName()).log(Level.INFO, "Object {0} saved to DB", entity); return entity; } @Override @SuppressWarnings("unchecked") public T update(T entity) { Logger.getLogger(GenericJpaService.class.getName()).log(Level.INFO, "Object {0} updated in DB", entity); return (T) this.em.merge(entity); } ... }
因此,当我首先运行应用程序时,我单击一些链接Add component。它执行:
公共字符串 createView()
- 我在那里添加一些数据+上传一些文件等......
- 然后我点击保存并关闭按钮。它执行:
公共字符串 createAndClose()
- 成功地将我的数据保存到数据库。
这是一个问题,当我再次执行此操作时,它会显示我之前保存的数据。我调试它,但我不明白它的设置位置。后
公共字符串 createView()
它应该为 jsf 页面使用新的 Component()。那么我在哪里犯了错误?什么我还是不明白?也许我应该使用 Hibernate 而不是普通的 JPA?我以前使用它(Hibernate),所以它更容易(使用 HibernateUtil)。
PS。对不起“new Component()”的多个实例,但我正在尝试将它放在任何地方......