我是第一次使用hibernate的新手,我正在创建一个简单的表单,使用hibernate和JSP页面将数据保存到我的数据库(MYSQL)中。但当我点击注册按钮,我的第二页打开,但空页。我的数据没有保存在数据库中,也没有创建表。
请把我丢失的东西告诉我
我的代码是
用户.java

  public class User {

        private int id;
        private String name;
        private String password;
        private String email;
        public int getId() {
            return id;
        }
        //getter and setter

Index.jsp文件
 <form action="register.jsp" method="post">
Name:<input type="text" name="name"/><br><br/>
Password:<input type="password" name="password"/><br><br/>
Email ID:<input type="text" name="email"/><br><br/>
<input type="submit" value="register"/>"

UserDao.java域
 package com.mypack.bean;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
 public class UserDao {

    public static int register(User u){
     int i=0;
     Session session=new Configuration().
     configure().buildSessionFactory().openSession();
     Transaction t=session.beginTransaction();
     t.begin();
     i=(Integer)session.save(u);
     t.commit();
     session.close();
      return i;
    }
     }

register.jsp文件
 <%@page import="com.mypack.bean.UserDao"%>
         <jsp:useBean id="obj" class="com.mypack.bean.User">
         </jsp:useBean>
         <jsp:setProperty property="*" name="obj"/>
         <%
           out.println("inside");
           int i=UserDao.register(obj);
           if(i>0)
           out.print("You are successfully registered");
           %>
              // hibernate.cfg.xml file

     <hibernate-configuration>
     <session-factory>
     <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/taskmanager</property>
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password"/>
    <property name="hibernate.hbm2ddl.auto">update</property>
    <property name="hibernate.show_sql">true</property>
    <mapping resource ="user.hbm.xml"/>
    </session-factory>
    </hibernate-configuration>

user.hbm.xml文件
 <hibernate-mapping>
        <class name="com.mypack.bean.User" table="userstable">
        <id name="id">
        <generator class="assigned"></generator>
        </id>
        <property name="name"></property>
        <property name="password"></property>
       <property name="email"></property>
       </class>

       </hibernate-mapping>

最佳答案

需要进行以下更改,
1)每个POJO类必须是Hibernate的默认构造函数,所以添加
User.java文件中的默认构造函数
2)变更单动作值<form action="UserDao" method="post">
3)将方法名改为UserDao.java文件public static void main(String[] arg){}
4)移除这条线i=(Integer)session.save(u)并替换为
以下代码

`
User u = new User();

u.setName(“abc”);
u.setEmail(“abc@abc.com”);
会话。保存(u);
`

10-07 12:35
查看更多