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 _______________________________________________ jboss-user mailing list jboss-user@lists.jboss.org https://lists.jboss.org/mailman/listinfo/jboss-user