无法在数据库Java EE中持久保存实体

时间:2012-05-03 08:55:14

标签: jsf java-ee jpa

我是Java EE的初学者,我正在尝试创建一个在数据库中持久保存用户实体的应用程序。我有以下代码:

用户实体

    @Entity
    public class User implements Serializable {
        private static final long serialVersionUID = 1L;

        @Id
        @GeneratedValue(strategy=GenerationType.AUTO)
        private int id;

        private String department;

        @Email
        private String email;

        @Column(name="`first name`")
        private String firstName;

        @Column(name="`last name`")
        private String lastName;

        private String password;

        //bi-directional many-to-one association to Unit
        @OneToMany(mappedBy="user")
        private Set<Unit> units;

    public User() {
    }

    public int getId() {
        return this.id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getDepartment() {
        return this.department;
    }

    public void setDepartment(String department) {
        this.department = department;
    }

    public String getEmail() {
        return this.email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getFirstName() {
        return this.firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getlastNameame() {
        return this.lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getPassword() {
        return this.password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Set<Unit> getUnits() {
        return this.units;
    }

    public void setUnits(Set<Unit> units) {
        this.units = units;
    }

}

用户无状态会话bean

    @Stateless
public class userEJB {

    @PersistenceContext
    private EntityManager em;
    /**
     * Default constructor. 
     */
    public userEJB() {
        // TODO Auto-generated constructor stub
    }

    public void createUser(User user)
    {
        em.persist(user);
    }

}

用户管理Bean(仅实现create方法)

    public class UserMBean {

    @EJB
    userEJB userSessionBean;

    private User user;



    public UserMBean() {
        this.user = new User();
    }

    public void save()
    {
        userSessionBean.createUser(user);
    }

}

signUp.xhtml

 <h:form>
            <h:panelGrid columns = "2">
                <h:outputLabel for="firstName" value="First Name"/>
                <h:inputText id="firstName" value="#{userMBean.user.firstName}" required = "true"/>
                <h:outputLabel for="lastName" value="Last Name"/>
                <h:inputText id="lastName" value="#{userMBean.user.lastName}" required = "true" />
                <h:outputLabel for="department" value="Department"/>
                <h:inputText id="department" value="#{userMBean.user.department}" required = "true"/>
                <h:outputLabel for ="email" value="Email"/>
                <h:inputText id="email" value="#{userMBean.user.email}" required = "true"/>
                <h:outputLabel for="password" value="Password"/>
                <h:inputText id="password" value="#{userMBean.user.password}" required = "true"/>

            </h:panelGrid>
            <h:commandButton action="#{userMBean.save}" value="Submit" />
        </h:form>

虽然正确显示了from,但在单击“提交”按钮时没有提供任何内容。没有服务器错误。它根本没有发出信号。如果我的代码有任何错误,你能帮我吗?

由于

1 个答案:

答案 0 :(得分:2)

你马上过得太多了。

单击提交按钮时,没有任何反应。为什么需要UI来验证持久层是否正常工作?编写单元测试,除了执行持久性代码之外什么都不做。隔离所做的工作直到你解决问题。

如上所述,您不知道您的持久性是坏的,还是会话bean或UI。