[jboss-user] [JBoss Seam] - persist passing null object

ector7280 do-not-reply at jboss.com
Fri Mar 9 16:38:43 EST 2007


I'm getting the following error when using the CRUD EntityHome object:

15:34:34,569 WARN  [JDBCExceptionReporter] SQL Error: 1400, SQLState: 23000
  | 15:34:34,569 ERROR [JDBCExceptionReporter] ORA-01400: cannot insert NULL into ("CPPMS"."CPPMS_USER"."NAME")
  | 
  | 15:34:34,569 WARN  [JDBCExceptionReporter] SQL Error: 1400, SQLState: 23000
  | 15:34:34,569 ERROR [JDBCExceptionReporter] ORA-01400: cannot insert NULL into ("CPPMS"."CPPMS_USER"."NAME")
  | 
  | 15:34:34,569 ERROR [AbstractFlushingEventListener] Could not synchronize database state with session
  | org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
  |         at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71)
  |         at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
  |         at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:249)
  |         at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:235)
  |         at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:139)
  |         at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:29
  | 8)
  |         at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
  |         at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
  |         at org.hibernate.ejb.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl.java:296)
  |         at org.jboss.seam.persistence.EntityManagerProxy.flush(EntityManagerProxy.java:81)
  |         at org.jboss.seam.framework.EntityHome.persist(EntityHome.java:49)
  |         at gov.dot.marad.persistence.ejb.model.CppmsUserHome.persist(CppmsUserHome.java:104)
  |         at gov.dot.marad.persistence.ejb.model.CppmsUserHome$$FastClassByCGLIB$$be17843c.invoke(<generated>)

Here's the bean:


  | package gov.dot.marad.persistence.ejb.model;
  | 
  | // Generated Mar 2, 2007 10:00:38 AM by Hibernate Tools 3.2.0.b9
  | 
  | import java.util.HashSet;
  | import java.util.Set;
  | 
  | import javax.persistence.CascadeType;
  | import javax.persistence.Column;
  | import javax.persistence.Entity;
  | import javax.persistence.FetchType;
  | import javax.persistence.GeneratedValue;
  | import javax.persistence.GenerationType;
  | import javax.persistence.Id;
  | import javax.persistence.ManyToMany;
  | import javax.persistence.OneToMany;
  | import javax.persistence.SequenceGenerator;
  | import javax.persistence.Table;
  | 
  | import org.hibernate.validator.Length;
  | import org.hibernate.validator.NotNull;
  | import org.jboss.seam.ScopeType;
  | import org.jboss.seam.annotations.Name;
  | import org.jboss.seam.annotations.Scope;
  | 
  | /**
  |  * CppmsUser generated by hbm2java
  |  */
  | @SuppressWarnings("serial")
  | @Entity
  | @Name("cppmsUser")
  | @Scope(ScopeType.SESSION)
  | @Table(name = "CPPMS_USER")
  | public class CppmsUser implements java.io.Serializable
  | {
  | 
  | 	private int userId;
  | 
  | 	private String name;
  | 
  | 	private String emailAddress;
  | 
  | 	private String userName;
  | 
  | 	private String password;
  | 
  | 	private Set<TitleXiTaskReminder> titleXiTaskReminders = new HashSet<TitleXiTaskReminder>(
  | 			0);
  | 
  | 	private Set<Report> reports = new HashSet<Report>(0);
  | 
  | 	private Set<TitleXiTask> titleXiTasksForCreatorId = new HashSet<TitleXiTask>(
  | 			0);
  | 
  | 	private Set<Profile> profiles = new HashSet<Profile>(0);
  | 
  | 	private Set<TitleXiTask> titleXiTasksForUserId = new HashSet<TitleXiTask>(0);
  | 
  | 	private Set<UserProgRoleRef> userProgRoleRefs = new HashSet<UserProgRoleRef>(
  | 			0);
  | 
  | 	private Set<CommunicationLog> communicationLogs = new HashSet<CommunicationLog>(
  | 			0);
  | 
  | 	public CppmsUser()
  | 	{
  | 	}
  | 
  | 	public CppmsUser(int userId)
  | 	{
  | 		this.userId = userId;
  | 	}
  | 
  | 	public CppmsUser(int userId, String name, String emailAddress,
  | 			String userName, String password,
  | 			Set<TitleXiTaskReminder> titleXiTaskReminders, Set<Report> reports,
  | 			Set<TitleXiTask> titleXiTasksForCreatorId, Set<Profile> profiles,
  | 			Set<TitleXiTask> titleXiTasksForUserId,
  | 			Set<UserProgRoleRef> userProgRoleRefs,
  | 			Set<CommunicationLog> communicationLogs)
  | 	{
  | 		this.userId = userId;
  | 		this.name = name;
  | 		this.emailAddress = emailAddress;
  | 		this.userName = userName;
  | 		this.password = password;
  | 		this.titleXiTaskReminders = titleXiTaskReminders;
  | 		this.reports = reports;
  | 		this.titleXiTasksForCreatorId = titleXiTasksForCreatorId;
  | 		this.profiles = profiles;
  | 		this.titleXiTasksForUserId = titleXiTasksForUserId;
  | 		this.userProgRoleRefs = userProgRoleRefs;
  | 		this.communicationLogs = communicationLogs;
  | 	}
  | 
  | 	@Id
  | 	@SequenceGenerator(name = "USER_SEQ", sequenceName = "CPPMS_USER_SEQUENCE")
  | 	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "USER_SEQ")
  | 	@Column(name = "USER_ID", unique = true, nullable = false, precision = 22, scale = 0)
  | 	@NotNull
  | 	public int getUserId()
  | 	{
  | 		return this.userId;
  | 	}
  | 
  | 	public void setUserId(int userId)
  | 	{
  | 		this.userId = userId;
  | 	}
  | 
  | 	@Column(name = "NAME", length = 50)
  | 	@Length(max = 50)
  | 	public String getName()
  | 	{
  | 		return this.name;
  | 	}
  | 
  | 	public void setName(String name)
  | 	{
  | 		this.name = name;
  | 	}
  | 
  | 	@Column(name = "EMAIL_ADDRESS", length = 60)
  | 	@Length(max = 60)
  | 	public String getEmailAddress()
  | 	{
  | 		return this.emailAddress;
  | 	}
  | 
  | 	public void setEmailAddress(String emailAddress)
  | 	{
  | 		this.emailAddress = emailAddress;
  | 	}
  | 
  | 	@Column(name = "USER_NAME", length = 40)
  | 	@Length(max = 40)
  | 	public String getUserName()
  | 	{
  | 		return this.userName;
  | 	}
  | 
  | 	public void setUserName(String userName)
  | 	{
  | 		this.userName = userName;
  | 	}
  | 
  | 	@Column(name = "PASSWORD", length = 20)
  | 	@Length(max = 20)
  | 	public String getPassword()
  | 	{
  | 		return this.password;
  | 	}
  | 
  | 	public void setPassword(String password)
  | 	{
  | 		this.password = password;
  | 	}
  | 
  | 	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "cppmsUser")
  | 	public Set<TitleXiTaskReminder> getTitleXiTaskReminders()
  | 	{
  | 		return this.titleXiTaskReminders;
  | 	}
  | 
  | 	public void setTitleXiTaskReminders(
  | 			Set<TitleXiTaskReminder> titleXiTaskReminders)
  | 	{
  | 		this.titleXiTaskReminders = titleXiTaskReminders;
  | 	}
  | 
  | 	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "cppmsUser")
  | 	public Set<Report> getReports()
  | 	{
  | 		return this.reports;
  | 	}
  | 
  | 	public void setReports(Set<Report> reports)
  | 	{
  | 		this.reports = reports;
  | 	}
  | 
  | 	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "cppmsUserByCreatorId")
  | 	public Set<TitleXiTask> getTitleXiTasksForCreatorId()
  | 	{
  | 		return this.titleXiTasksForCreatorId;
  | 	}
  | 
  | 	public void setTitleXiTasksForCreatorId(
  | 			Set<TitleXiTask> titleXiTasksForCreatorId)
  | 	{
  | 		this.titleXiTasksForCreatorId = titleXiTasksForCreatorId;
  | 	}
  | 
  | 	@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
  | 	public Set<Profile> getProfiles()
  | 	{
  | 		return this.profiles;
  | 	}
  | 
  | 	public void setProfiles(Set<Profile> profiles)
  | 	{
  | 		this.profiles = profiles;
  | 	}
  | 
  | 	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "cppmsUserByUserId")
  | 	public Set<TitleXiTask> getTitleXiTasksForUserId()
  | 	{
  | 		return this.titleXiTasksForUserId;
  | 	}
  | 
  | 	public void setTitleXiTasksForUserId(Set<TitleXiTask> titleXiTasksForUserId)
  | 	{
  | 		this.titleXiTasksForUserId = titleXiTasksForUserId;
  | 	}
  | 
  | 	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "cppmsUser")
  | 	public Set<UserProgRoleRef> getUserProgRoleRefs()
  | 	{
  | 		return this.userProgRoleRefs;
  | 	}
  | 
  | 	public void setUserProgRoleRefs(Set<UserProgRoleRef> userProgRoleRefs)
  | 	{
  | 		this.userProgRoleRefs = userProgRoleRefs;
  | 	}
  | 
  | 	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "cppmsUser")
  | 	public Set<CommunicationLog> getCommunicationLogs()
  | 	{
  | 		return this.communicationLogs;
  | 	}
  | 
  | 	public void setCommunicationLogs(Set<CommunicationLog> communicationLogs)
  | 	{
  | 		this.communicationLogs = communicationLogs;
  | 	}
  | 
  | 	
  | }
  | 

The home:

  | package gov.dot.marad.persistence.ejb.model;
  | 
  | import java.util.ArrayList;
  | import java.util.List;
  | 
  | import javax.persistence.EntityManager;
  | 
  | import org.jboss.seam.annotations.Factory;
  | import org.jboss.seam.annotations.In;
  | import org.jboss.seam.annotations.Name;
  | import org.jboss.seam.framework.EntityHome;
  | 
  | @SuppressWarnings("serial")
  | @Name("cppmsUserHome")
  | public class CppmsUserHome extends EntityHome<CppmsUser>
  | {
  | 
  | 	@In(create = true)
  | 	EntityManager em;
  | 
  | 	public EntityManager getEntityManager()
  | 	{
  | 		return em;
  | 	}
  | 
  | 	@Factory("cppmsUser")
  | 	public CppmsUser initCppmsUser()
  | 	{
  | 		return getInstance();
  | 	}
  | 
  | 	public void setCppmsUserUserId(Integer id)
  | 	{
  | 		setId(id);
  | 	}
  | 
  | 	public Integer getCppmsUserUserId()
  | 	{
  | 		return (Integer) getId();
  | 	}
  | 
  | 	@Override
  | 	protected CppmsUser createInstance()
  | 	{
  | 		CppmsUser cppmsUser = new CppmsUser();
  | 		return cppmsUser;
  | 	}
  | 
  | 	public void wire()
  | 	{
  | 	}
  | 
  | 	public boolean isWired()
  | 	{
  | 		return true;
  | 	}
  | 
  | 	public CppmsUser getDefinedInstance()
  | 	{
  | 		return isIdDefined() ? getInstance() : null;
  | 	}
  | 
  | 	public List<TitleXiTaskReminder> getTitleXiTaskReminders()
  | 	{
  | 		return getInstance() == null ? null
  | 				: new ArrayList<TitleXiTaskReminder>(getInstance()
  | 						.getTitleXiTaskReminders());
  | 	}
  | 
  | 	public List<Report> getReports()
  | 	{
  | 		return getInstance() == null ? null : new ArrayList<Report>(
  | 				getInstance().getReports());
  | 	}
  | 
  | 	public List<TitleXiTask> getTitleXiTasksForCreatorId()
  | 	{
  | 		return getInstance() == null ? null : new ArrayList<TitleXiTask>(
  | 				getInstance().getTitleXiTasksForCreatorId());
  | 	}
  | 
  | 	public List<TitleXiTask> getTitleXiTasksForUserId()
  | 	{
  | 		return getInstance() == null ? null : new ArrayList<TitleXiTask>(
  | 				getInstance().getTitleXiTasksForUserId());
  | 	}
  | 
  | 	public List<UserProgRoleRef> getUserProgRoleRefs()
  | 	{
  | 		return getInstance() == null ? null : new ArrayList<UserProgRoleRef>(
  | 				getInstance().getUserProgRoleRefs());
  | 	}
  | 
  | 	public List<CommunicationLog> getCommunicationLogs()
  | 	{
  | 		return getInstance() == null ? null : new ArrayList<CommunicationLog>(
  | 				getInstance().getCommunicationLogs());
  | 	}
  | 	
  | }
  | 


The page:


  | <f:view xmlns:h="http://java.sun.com/jsf/html"
  | 	xmlns:f="http://java.sun.com/jsf/core"
  | 	xmlns:ice="http://www.icesoft.com/icefaces/component">
  | 
  | 	<ice:outputDeclaration doctypeRoot="HTML"
  | 		doctypePublic="-//W3C//DTD HTML 4.01 Transitional//EN"
  | 		doctypeSystem="http://www.w3.org/TR/html4/loose.dtd" />
  | 
  | 	<html>
  | 	<head>
  | 
  | 	<title>CPPMS</title>
  | 	<link href="./xmlhttp/css/xp/xp.css" rel="stylesheet" type="text/css" />
  | 	</head>
  | 	<body>
  | 	<h2>Create User</h2>
  | 	<ice:form>
  | 		<f:loadBundle basename="gov.dot.marad.web.MessageBundle" var="bundle" />
  | 		<ice:outputLabel for="name">
  | 			<ice:outputText value="#{bundle.name_label}">
  | 			</ice:outputText>
  | 		</ice:outputLabel>
  | 		<ice:inputText id="name" value="#{cppmsUser.name}" />
  | 		<br />
  | 		<ice:outputLabel for="emailAddress">
  | 			<ice:outputText value="#{bundle.user_email_label}">
  | 			</ice:outputText>
  | 		</ice:outputLabel>
  | 		<ice:inputText id="emailAddress" value="#{cppmsUser.emailAddress}" />
  | 		<br />
  | 		<ice:outputLabel for="userName">
  | 			<ice:outputText value="#{bundle.user_name_label}">
  | 			</ice:outputText>
  | 		</ice:outputLabel>
  | 		<ice:inputText id="userName" value="#{cppmsUser.userName}" />
  | 		<br />
  | 
  | 		<ice:outputLabel for="password">
  | 			<ice:outputText value="#{bundle.user_password_label}"></ice:outputText>
  | 		</ice:outputLabel>
  | 		<ice:inputSecret id="password" redisplay="false"
  | 			value="#{cppmsUser.password}"></ice:inputSecret>
  | 		<br />
  | 		<ice:messages showDetail="true" />
  | 		<ice:commandButton action="#{cppmsUserHome.persist}"
  | 			value="Create User"></ice:commandButton>
  | 	</ice:form>
  | 	</body>
  | 	</html>
  | </f:view>
  | 

Is it necessary to supply all of parameters in the constructor?
Is this caused by the use of a sequence generator?

Thanks,

JR

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

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



More information about the jboss-user mailing list