读取模式错误:无法获取rom数据库的表列表。可能是JDBC驱动程序

时间:2017-09-08 16:16:52

标签: java eclipse hibernate maven jdbc

所以,我几周来一直试图找出我的hibernate配置有什么问题。我承认,我对网络开发还很陌生,所以请原谅我常见的错误。我正在尝试使用maven Web应用程序和带有mysql数据库的hibernate框架创建一个简单的登录页面。驱动程序可以连接到数据库,如上面的源资源管理器中所示。但是hibernate连接会抛出读取模式错误。

当我尝试运行该项目时,我得到了映射类的未知实体错误。我在网上看过类似的问题,但解决方案似乎没有用,他们的错误也不同。

用户类:

package ProjectName.users;
import java.util.Date;

public class User {
 private int user_no;
 private String user_name;
 private String password;
 private String full_name;
 private String email_id;
 private String about_me;
 private Date dob;
 private Date doj;

 public String getUser_name() {
  return user_name;
 }
 public void setUser_name(String user_name) {
  this.user_name = user_name;
 }
 public String getPassword() {
  return password;
 }
 public void setPassword(String password) {
  this.password = password;
 }
 public String getFull_name() {
  return full_name;
 }
 public void setFull_name(String full_name) {
  this.email_id = full_name;
 }
 public String getEmail_id() {
  return email_id;
 }
 public void setEmail_id(String email_id) {
  this.email_id = email_id;
 }
 public void setAbout_me(String about_me) {
  this.about_me = about_me;
 }
 public String getAbout_me() {
  return about_me;
 }
 public Date getDob() {
  return dob;
 }
 public void setDob(Date dob) {
  this.dob = dob;
 }
 public Date getDoj() {
  return doj;
 }
 public void setDoj(Date doj) {
  this.doj = doj;
 }
 @Override
 public String toString() {
  return "userdb [user_no=" + user_no + "user_name=" + user_name + ", 
  password = " + password +", full_name = "+full_name+", dob = " + dob + ", doj = " + 
  doj + ", email_id=" + email_id + ", about_me=" + about_me + "]";
 }
}

hibernate配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
    <property 
  name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.password">password</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/userdb</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
    <property name="show_sql">true</property>
    <property name="format_sql">true</property>
    <property name="hbm2ddl.auto">update </property>
    <mapping resource="User.hbm.xml" />
</session-factory>

由于个人原因,我已将项目名称划掉。以下是该项目的具体内容。

From top: Hibernate Configurations [jboss tools], Java build path, Data Source Explorer, Stack Trace from console, web deployment Assembly

堆栈追踪:

Sep 09, 2017 1:58:36 PM org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection
INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@240fdbb5] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode.
org.hibernate.UnknownEntityTypeException: Unable to locate persister: projectName.users.User
    at org.hibernate.metamodel.internal.MetamodelImpl.locateEntityPersister(MetamodelImpl.java:637)
    at org.hibernate.internal.SessionImpl.locateEntityPersister(SessionImpl.java:2942)
    at org.hibernate.internal.SessionImpl.access$1800(SessionImpl.java:203)
    at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.<init>(SessionImpl.java:2693)
    at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.<init>(SessionImpl.java:2679)
    at org.hibernate.internal.SessionImpl.byId(SessionImpl.java:1200)
    at org.hibernate.internal.SessionImpl.get(SessionImpl.java:1073)
    at ProjectName.users.UserDao.getuserByUID(UserDao.java:108)
    at ProjectName.users.Validation.doPost(Validation.java:69)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:475)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:625)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:498)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:796)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1372)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)
Sep 09, 2017 1:58:36 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [Validation] in context with path [/ProjectName] threw exception
javax.persistence.TransactionRequiredException: no transaction is in progress
    at org.hibernate.internal.SessionImpl.checkTransactionNeeded(SessionImpl.java:3461)
    at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1425)
    at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1421)
    at ProjectName.users.UserDao.getuserByUID(UserDao.java:112)
    at ProjectName.users.Validation.doPost(Validation.java:69)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:475)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:625)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:498)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:796)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1372)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)

然后,这是从索引页面检索表单的servlet。

package ProjectName.users;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class Validation extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
 * @see HttpServlet#HttpServlet()
 */
public Validation() {
    super();
    // TODO Auto-generated constructor stub
}

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    response.getWriter().append("Served at: ").append(request.getContextPath());
}

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    HttpSession session = request.getSession();
    String mode = request.getParameter("mode");
    UserDao u2 = new UserDao();
    String un=request.getParameter("username");
    String pw=request.getParameter("password");

    if(mode.equals("register"))
    {



        String pw2=request.getParameter("password2");
        if(!pw.equals(pw2))
        {   
            String alert = "PM"; //Password Mismatch
            session.setAttribute("alert",alert);
            response.sendRedirect("index.jsp");
        }
        if(u2.getuserByID(un,pw)==null)
        {
            User u1 = new User();
            u1.setUser_name(un);
            u1.setPassword(pw);
            u2.addUser(u1);
            session.setAttribute("username", un ); 
            session.setAttribute("password",pw);
            response.sendRedirect("Profile.jsp");
        }

    }
    else if(mode.equals("login"))
    {
        if(u2.getuserByUID(un)!=null) {
            if(u2.getuserByID(un,pw)==null) {
                String alert = "WP";  //Wrong password
                session.setAttribute("alert",alert);
                response.sendRedirect("index.jsp");
            }
            else 
            {
            session.setAttribute("username", un ); 
            session.setAttribute("password",pw);
            response.sendRedirect("Profile.jsp");
            }
        }
        else
        {
            String alert = "UU";  //Unregistered Username
            session.setAttribute("alert",alert);
            response.sendRedirect("index.jsp");
        }

    }
}

}

1 个答案:

答案 0 :(得分:0)

我认为你应该添加持久性注释,如:

@Entity    
@Table
@Id
@Column

编辑:(例如这里) http://www.techferry.com/articles/hibernate-jpa-annotations.html