[jboss-user] [JBoss Seam] - Hibernate Validation / Page Scope --> allways new entity

mrwhite do-not-reply at jboss.com
Fri Jul 21 10:46:49 EDT 2006


Hi everybody,
i got a strange data manipulation problem. 

I have a simple form i use for editing and inserting:

  | <h:form>
  |          <s:validateAll>
  |             <div>
  |                <h:outputLabel for="firstname">Vorname: </h:outputLabel>
  |             </div>
  |             <div>
  |                <h:inputText id="firstname" value="#{newClientPerson.firstname}" size="70" maxlength="70" required="true"/>
  |                <span class="errors"><h:message for="firstname"/></span>
  |             </div>
  |             <div>
  |                <h:outputLabel for="lastname">Nachname: </h:outputLabel>
  |             </div>
  |             <div>
  |                <h:inputText id="lastname" value="#{newClientPerson.lastname}" size="70" maxlength="70" required="true"/>
  |                <span class="errors"><h:message for="lastname"/></span>
  |             </div>
  |             <div>
  |                <h:commandButton value="Speichern" action="#{clientPersonAction.saveClientPerson}"/>
  |             </div>
  |          </s:validateAll>
  |       </h:form>
  | 


And i have the following Action:

  | @Stateless
  | @Name("clientPersonAction")
  | public class ClientPersonEditAction implements ClientPersonEdit{
  | 	
  | 	@PersistenceContext
  | 	private EntityManager em;
  | 	
  | 	@RequestParameter()
  | 	private Long clientPersonId;
  | 	
  | 	@In(required=false) 
  | 	@Out(scope=ScopeType.PAGE,required=false)
  | 	@Valid
  | 	private ClientPerson newClientPerson;
  | 	
  | 	@Factory("newClientPerson")
  | 	public void createNewClientPerson()
  | 	{
  | 		if(clientPersonId != null)
  | 		{
  | 			ClientPersonDAO clientPersonDAO = new ClientPersonDAO(em);
  | 			newClientPerson = clientPersonDAO.getClientPersonById(clientPersonId);
  | 			System.out.println("createNewClientPerson:" + newClientPerson.getId());
  | 		}
  | 		else
  | 		{
  | 			newClientPerson = new ClientPerson();
  | 		}
  | 	}
  | 	
  | 	public String saveClientPerson() {
  | 		ClientPersonDAO clientPersonDAO = new ClientPersonDAO(em);
  | 		System.out.println("newClientPerson.getId():" + newClientPerson.getId());
  | 		clientPersonDAO.merge(newClientPerson);
  | 		return "home";
  | 	}
  | 	
  | 
  | }
  | 


The Entity

package org.jboss.seam.example.client;
  | 
  | import java.io.Serializable;
  | 
  | import javax.persistence.Entity;
  | 
  | import org.hibernate.validator.NotNull;
  | import org.jboss.seam.ScopeType;
  | import org.jboss.seam.annotations.Scope;
  | 
  | @Scope(ScopeType.EVENT)
  | @Entity
  | public class ClientPerson extends Client implements Serializable{
  | 	
  | 	private static final long serialVersionUID = -7846741936105611777L;
  | 	private String firstname;
  | 	private String lastname;
  | 	
  | 	@NotNull
  | 	public String getFirstname() {
  | 		return firstname;
  | 	}
  | 	
  | 	public void setFirstname(String firstname) {
  | 		this.firstname = firstname;
  | 	}
  | 	
  | 	@NotNull
  | 	public String getLastname() {
  | 		return lastname;
  | 	}
  | 	
  | 	public void setLastname(String lastname) {
  | 		this.lastname = lastname;
  | 	}
  | 	
  | 
  | 
  | 
  | 
  | }
  | 


When I fill out the form and save a new object its correctly saved in the database. When some id is passed to the action i can edit the values from the database object and save everything back.

BUT: When i open a persisted object from the database and  remove the field content from a field that has for example the hibernate validator annotation @NotNull i get the normal message "value required".  Then i type in correct data and press the save button a new entity is persisted with all the other fields  from the "old" entity but under a different id.

Summary: Adding and editing works. Saving a persisted object after a hibernate validation error creates a new one in the database.

Any suggestions on that?



 

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3959913#3959913

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3959913



More information about the jboss-user mailing list