Note that there are some explanatory texts on larger screens.

plurals
  1. POUpdate a record using Hibernate, Primefaces and Spring
    primarykey
    data
    text
    <p>I am using integration of <code>spring 3</code> <code>hibernate 4</code> <code>jsf</code> and <code>primefaces</code>. in my datatable i can <code>insert</code> and <code>delete</code> a record, but my update code does not work and can not update the tables and the database. i don't want to use primefaces <code>cell editor</code>, i want a <code>command button</code> perform the update. but when i click the command button it delete the cells (fields) in database and datatable except personel_id field. please help me to have correct code. <img src="https://i.stack.imgur.com/yxu2J.jpg" alt="enter image description here"> when i edit fields and click the update button: <img src="https://i.stack.imgur.com/MwA8T.jpg" alt="enter image description here"> <strong>personelDao.java</strong></p> <pre><code>public class PersonelDao implements IPersonelDao { private SessionFactory sessionFactory; public void addPersonel(Personel personel) { getSessionFactory().getCurrentSession().save(personel); } public Personel updatePersonel(Personel personel) { final Session session = getSessionFactory().getCurrentSession(); if(session.contains(personel)){ session.update(personel); } else { personel = (Personel) session.merge(personel); } return personel; } public void deletePersonel(Personel personel) { getSessionFactory().getCurrentSession().delete(personel); } } </code></pre> <p><strong>personelservice.java</strong></p> <pre><code>@Transactional(readOnly=true) public class PersonelService implements IPersonelService{ IPersonelDao personeldao; @Transactional(readOnly=false) public void addPersonel(Personel personel) { getPersoneldao().addPersonel(personel); } @Transactional(readOnly=false) public void updatePersonel(Personel personel){ getPersoneldao().updatePersonel(personel); } @Transactional(readOnly=false) public void deletePersonel(Personel personel) { getPersoneldao().deletePersonel(personel); } } </code></pre> <p><strong>personelbean.java</strong></p> <pre><code>@ManagedBean(name="personelMB") @RequestScoped public class PersonelBean implements Serializable{ private static final long serialVersionUID = 1L; @ManagedProperty(value="#{PersonelService}") IPersonelService personelservice; List&lt;Personel&gt; personelList; private int personel_id; private String pname; private String pfamily; private String paddress; private String pphone; //getter and setter public void addPersonel(){ Personel personel=new Personel(); personel.setPaddress(getPaddress()); personel.setPersonel_id(getPersonel_id()); personel.setPfamily(getPfamily()); personel.setPname(getPname()); personel.setPphone(getPphone()); getPersonelservice().addPersonel(personel); reset(); } public void deletePersonel(int personel_id){ Personel personel=(Personel)personelservice.getPersonelId(personel_id); getPersonelservice().deletePersonel(personel); } public void update(int personel_id){ Personel personel=(Personel)personelservice.getPersonelId(personel_id); personel.setPaddress(getPaddress()); personel.setPfamily(getPfamily()); personel.setPname(getPname()); personel.setPphone(getPphone()); getPersonelservice().updatePersonel(personel); } } </code></pre> <p><strong>personel.xhtml</strong></p> <pre><code> &lt;h2&gt;مشاهده اطلاعات پرسنل&lt;/h2&gt; &lt;h:form prependId="false"&gt; &lt;p:dataTable id="pdataTable" var="personel" value="#{personelMB.personelList}" rowKey="#{personelMB.personel_id}" editable="true" &gt; &lt;f:facet name="header"&gt; اطلاعات پرسنل &lt;/f:facet&gt; &lt;p:column&gt; &lt;f:facet name="header"&gt; شماره پرسنلی &lt;/f:facet&gt; &lt;h:outputText value="#{personel.personel_id}" /&gt; &lt;f:facet name="footer"&gt; کدملی &lt;/f:facet&gt; &lt;/p:column&gt; &lt;p:column headerText="نام"&gt; &lt;p:inputText value="#{personel.pname}" size="5"/&gt; &lt;/p:column&gt; &lt;p:column headerText="نام خانوادگی"&gt; &lt;p:inputText value="#{personel.pfamily}" size="5"/&gt; &lt;/p:column&gt; &lt;p:column headerText="آدرس"&gt; &lt;p:inputText value="#{personel.paddress}" size="5"/&gt; &lt;/p:column&gt; &lt;p:column headerText="تلفن"&gt; &lt;p:inputText value="#{personel.pphone}" size="5"/&gt; &lt;/p:column&gt; &lt;p:column headerText="حذف"&gt; &lt;f:facet name="حذف"&gt; &lt;h:outputText value="" /&gt; &lt;/f:facet&gt; &lt;p:commandButton icon="ui-icon-trash" title="حذف" actionListener="#{personelMB.deletePersonel(personel.personel_id)}" update="@form" ajax="true"/&gt; &lt;/p:column&gt; &lt;p:column headerText="ويرايش"&gt; &lt;p:commandButton icon="ui-icon-pencil" title="ويرایش" actionListener="#{personelMB.update(personel.personel_id)}" update="@form" ajax="true"/&gt; &lt;/p:column&gt; &lt;f:facet name="footer"&gt; تعداد رکورد#{fn:length(personelMB.getPersonelList())} میباشد. &lt;/f:facet&gt; &lt;/p:dataTable&gt; </code></pre> <p><strong>personel.java</strong></p> <pre><code>@Entity @Table(name="TBLPERSONEL") public class Personel { @Id @Column(name="PERSONEL_ID") private int personel_id; @Column(name="PNAME") private String pname; @Column(name="PFAMILY") private String pfamily; @Column(name="PADDRESS") private String paddress; @Column(name="PPHONE") private String pphone; @OneToOne @PrimaryKeyJoinColumn private Manager manager; @OneToMany(mappedBy="personel") private Set&lt;Stufftransfer&gt; stufftransfers; public Personel(){ } //getter and setter } </code></pre> <p>trace: </p> <pre><code>Hibernate: update TBLPERSONEL set PADDRESS=?, PFAMILY=?, PNAME=?, PPHONE=? where PERSONEL_ID=? Hibernate: select personel0_.PERSONEL_ID as PERSONEL1_1_, personel0_.PADDRESS as PADDRESS1_, personel0_.PFAMILY as PFAMILY1_, personel0_.PNAME as PNAME1_, personel0_.PPHONE as PPHONE1_ from TBLPERSONEL personel0_ Hibernate: select manager0_.ID as ID0_1_, manager0_.PASSWORD as PASSWORD0_1_, manager0_.PERSONEL_ID as PERSONEL3_0_1_, personel1_.PERSONEL_ID as PERSONEL1_1_0_, personel1_.PADDRESS as PADDRESS1_0_, personel1_.PFAMILY as PFAMILY1_0_, personel1_.PNAME as PNAME1_0_, personel1_.PPHONE as PPHONE1_0_ from TBLMANAGER manager0_ left outer join TBLPERSONEL personel1_ on manager0_.ID=personel1_.PERSONEL_ID where manager0_.ID=? Hibernate: select manager0_.ID as ID0_1_, manager0_.PASSWORD as PASSWORD0_1_, manager0_.PERSONEL_ID as PERSONEL3_0_1_, personel1_.PERSONEL_ID as PERSONEL1_1_0_, personel1_.PADDRESS as PADDRESS1_0_, personel1_.PFAMILY as PFAMILY1_0_, personel1_.PNAME as PNAME1_0_, personel1_.PPHONE as PPHONE1_0_ from TBLMANAGER manager0_ left outer join TBLPERSONEL personel1_ on manager0_.ID=personel1_.PERSONEL_ID where manager0_.ID=? Hibernate: select manager0_.ID as ID0_1_, manager0_.PASSWORD as PASSWORD0_1_, manager0_.PERSONEL_ID as PERSONEL3_0_1_, personel1_.PERSONEL_ID as PERSONEL1_1_0_, personel1_.PADDRESS as PADDRESS1_0_, personel1_.PFAMILY as PFAMILY1_0_, personel1_.PNAME as PNAME1_0_, personel1_.PPHONE as PPHONE1_0_ from TBLMANAGER manager0_ left outer join TBLPERSONEL personel1_ on manager0_.ID=personel1_.PERSONEL_ID where manager0_.ID=? Hibernate: select personel0_.PERSONEL_ID as PERSONEL1_1_, personel0_.PADDRESS as PADDRESS1_, personel0_.PFAMILY as PFAMILY1_, personel0_.PNAME as PNAME1_, personel0_.PPHONE as PPHONE1_ from TBLPERSONEL personel0_ Hibernate: select manager0_.ID as ID0_1_, manager0_.PASSWORD as PASSWORD0_1_, manager0_.PERSONEL_ID as PERSONEL3_0_1_, personel1_.PERSONEL_ID as PERSONEL1_1_0_, personel1_.PADDRESS as PADDRESS1_0_, personel1_.PFAMILY as PFAMILY1_0_, personel1_.PNAME as PNAME1_0_, personel1_.PPHONE as PPHONE1_0_ from TBLMANAGER manager0_ left outer join TBLPERSONEL personel1_ on manager0_.ID=personel1_.PERSONEL_ID where manager0_.ID=? Hibernate: select manager0_.ID as ID0_1_, manager0_.PASSWORD as PASSWORD0_1_, manager0_.PERSONEL_ID as PERSONEL3_0_1_, personel1_.PERSONEL_ID as PERSONEL1_1_0_, personel1_.PADDRESS as PADDRESS1_0_, personel1_.PFAMILY as PFAMILY1_0_, personel1_.PNAME as PNAME1_0_, personel1_.PPHONE as PPHONE1_0_ from TBLMANAGER manager0_ left outer join TBLPERSONEL personel1_ on manager0_.ID=personel1_.PERSONEL_ID where manager0_.ID=? Hibernate: select manager0_.ID as ID0_1_, manager0_.PASSWORD as PASSWORD0_1_, manager0_.PERSONEL_ID as PERSONEL3_0_1_, personel1_.PERSONEL_ID as PERSONEL1_1_0_, personel1_.PADDRESS as PADDRESS1_0_, personel1_.PFAMILY as PFAMILY1_0_, personel1_.PNAME as PNAME1_0_, personel1_.PPHONE as PPHONE1_0_ from TBLMANAGER manager0_ left outer join TBLPERSONEL personel1_ on manager0_.ID=personel1_.PERSONEL_ID where manager0_.ID=? </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload