#java #merge #entity #javabeans
Вопрос:
Добрый вечер , я пытаюсь удалить и обновить сущность,хранящуюся в базе данных, приложение не выдает мне ошибок, но де-факто оно не объединяет и не удаляет запись из базы данных
Возможно, проблема в менеджере сущностей
Кто-нибудь может объяснить мне, что я делаю не так?
<p:commandButton value="Save" icon="pi pi-check" action="#{marcaController.creaMarca()}"
update="manage-product-content" process="manage-product-content @this"/>
//...
<p:commandButton value="Yes" icon="pi pi-check" action="#{marcaController.deleteMarca()}"
process="@this" oncomplete="PF('deleteProductDialog').hide()"/>
Это Маркконтроллер
Marca m=new Marca();
private static final long serialVersionUID = 1L;
@EJB
private MarcaDao marcaDao;
public void openNew() {
this.m = new Marca();
}
public Marca getSelected() {
return m;
}
public void setSelected(Marca m) {
this.m=m;
}
public void creaMarca() {
if(m.getIdmarca()==null) {
try {
marcaDao.create(m);
FacesMessage m = new FacesMessage
(FacesMessage.SEVERITY_INFO, "Product created"
,"OK");
FacesContext.getCurrentInstance().addMessage("Success", m);
} catch (Exception e) {
FacesMessage m = new FacesMessage
(FacesMessage.SEVERITY_ERROR, e.getMessage()
,"KO");
FacesContext.getCurrentInstance().addMessage("Error", m);
}
}
else {
update();
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Product Updated"));
}
PrimeFaces.current().executeScript("PF('manageProductDialog').hide()");
PrimeFaces.current().ajax().update("form:messages", "form:dt-products");
}
public void update() {
marcaDao.update(getSelected());
}
public void deleteMarca() {
Marca m1=m;
marcaDao.deleteById(m1.getIdmarca());
m=null;
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Product Removed"));
PrimeFaces.current().ajax().update("form:messages", "form:dt-products");
}
Это МаркаДао
@PersistenceContext(unitName = "mio-persistence-unit")
private EntityManager em;
public void create(Marca entity) {
em.persist(entity);
}
public void deleteById(Integer id) {
Marca entity = em.find(Marca.class, id);
if (entity != null) {
em.remove(entity);
}
}
public void update(Marca entity) {
Marca m2 = em.find(Marca.class, entity.getIdmarca());
em.merge(m2);
}
Заранее благодарю вас!