Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 错误org.hibernate.MappingException:未知实体:com.csm.app1st.model.User_Java_Hibernate - Fatal编程技术网

Java 错误org.hibernate.MappingException:未知实体:com.csm.app1st.model.User

Java 错误org.hibernate.MappingException:未知实体:com.csm.app1st.model.User,java,hibernate,Java,Hibernate,我正在尝试使用java和hibernate开发我的第一个简单Web应用程序,但它不起作用 这就是错误: org.hibernate.MappingException: Unknown entity: com.csm.app1st.model.User at org.hibernate.metamodel.internal.MetamodelImpl.entityPersister(MetamodelImpl.java:620) at org.hibernate.internal

我正在尝试使用java和hibernate开发我的第一个简单Web应用程序,但它不起作用

这就是错误:

 org.hibernate.MappingException: Unknown entity: com.csm.app1st.model.User
    at org.hibernate.metamodel.internal.MetamodelImpl.entityPersister(MetamodelImpl.java:620)
    at org.hibernate.internal.SessionImpl.getEntityPersister(SessionImpl.java:1606)
    at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:104)
    at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:192)
    at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:38)
    at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:177)
    at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:32)
    at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:73)
    at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:675)
    at org.hibernate.internal.SessionImpl.save(SessionImpl.java:667)
    at org.hibernate.internal.SessionImpl.save(SessionImpl.java:662)
    at com.csm.app1st.controller.AddUser.doPost(AddUser.java:40)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1083)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:640)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)
这是我的密码

地址用户:

package com.csm.app1st.controller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;

import com.csm.app1st.model.User;

/**
 * Servlet implementation class AddUser
 */
@WebServlet(description = "Create new user Servlet", urlPatterns = { "/CreateUser.do" })
public class AddUser extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {

        Configuration config = new Configuration().configure();
        ServiceRegistry servReg = new StandardServiceRegistryBuilder().applySettings(config.getProperties()).build();
        SessionFactory factory = config.buildSessionFactory(servReg);

        Session session = factory.openSession();
        session.beginTransaction();
        User u = new User(request.getParameter("firstname"), request.getParameter("lastname"), request.getParameter("country"));
        session.save(u);
        session.getTransaction().commit();
        session.close();

        RequestDispatcher view = request.getRequestDispatcher("useradd.jsp");
        view.forward(request, response);
    }

}
使用者

配置文件休眠

 <hibernate-configuration>
    <session-factory>

        <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
        <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>

        <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/firstapp</property>
        <property name="hibernate.connection.username">postgres</property>
        <property name="hibernate.connection.password">password</property>
        <property name="show_sql">false</property>

        <mapping class="com.csm.app1st.model.User" />

    </session-factory>
</hibernate-configuration>

org.hibernate.dialogue.PostgreSqlDialogue
org.postgresql.Driver
jdbc:postgresql://localhost:5432/firstapp
博士后
密码
假的
我不知道为什么它不起作用。 你能帮我吗

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>first_project</groupId>
  <artifactId>first_project</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <build>
    <sourceDirectory>src</sourceDirectory>
    <resources>
      <resource>
        <directory>src</directory>
        <excludes>
          <exclude>**/*.java</exclude>
        </excludes>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.4</version>
        <configuration>
          <warSourceDirectory>WebContent</warSourceDirectory>
          <failOnMissingWebXml>false</failOnMissingWebXml>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

4.0.0
第一个项目
第一个项目
0.0.1-快照
战争
src
src
**/*.爪哇
maven编译器插件
3.1
1.8
1.8
maven战争插件
2.4
网络内容
假的

由于您使用的是批注,因此应更改此行:

Configuration config = new Configuration().configure();


与您的示例几乎相同的一个非常基本的示例可以在以下位置找到:

因为您使用的是注释,所以应该更改此行:

Configuration config = new Configuration().configure();


与您的示例几乎相同的一个非常基本的示例位于:

我尝试替换
adduser.java
文件中的以下代码

Configuration config = new Configuration().configure(); 
ServiceRegistry servReg = new StandardServiceRegistryBuilder().applySettings(config.getProperties()).build(); 
SessionFactory factory = config.buildSessionFactory(servReg);


其余都一样。它对我有效。

我尝试替换
adduser.java
文件中的以下代码

Configuration config = new Configuration().configure(); 
ServiceRegistry servReg = new StandardServiceRegistryBuilder().applySettings(config.getProperties()).build(); 
SessionFactory factory = config.buildSessionFactory(servReg);


其余都一样。它对我有效。

您的hibernate配置文件名为
hibernate.cfg.xml
?它放在项目中的什么位置?这可能无法解决当前的问题,但我发现了一个错误:Hibernate实体总是需要一个没有参数的默认构造函数。从我看到的情况来看,您的用户类缺少此默认构造函数。是的,配置文件的名称是hibernate.cfg.xml,有问题吗?文件位置是:Java Resources/src稍等一下,您有一个web Servlet,在每个post请求中,您都希望重新打开hibernate上下文??请告诉我,这只是为了测试。。。。。。。。正如@elefasGR所提到的,要么混合了hibernate依赖项,要么缺少其中的一些依赖项。如果你发布pom.xml甚至你的
classpath/lib
directory这是我的第一个webapp,我不是专家。我添加了pom.xml是您的hibernate配置文件,名为
hibernate.cfg.xml
?它放在项目中的什么位置?这可能无法解决当前的问题,但我发现了一个错误:Hibernate实体总是需要一个没有参数的默认构造函数。从我看到的情况来看,您的用户类缺少此默认构造函数。是的,配置文件的名称是hibernate.cfg.xml,有问题吗?文件位置是:Java Resources/src稍等一下,您有一个web Servlet,在每个post请求中,您都希望重新打开hibernate上下文??请告诉我,这只是为了测试。。。。。。。。正如@elefasGR所提到的,要么混合了hibernate依赖项,要么缺少其中的一些依赖项。如果你发布pom.xml甚至你的
classpath/lib
directory这是我的第一个webapp,我不是专家。我添加了pom.xmli,但它不起作用,这是错误:这一行有多个标记-类型AnnotationConfigurationStrange的方法configure()未定义,您使用的是哪个版本的hibernate?您的问题中是否还有一个
pom.xml
文件要发布?我正在使用hibernate 5.2.3,我添加了pom.xml,但它不起作用,这是错误:此行有多个标记-类型AnnotationConfigurationStrange的方法configure()未定义,您使用的是哪个版本的hibernate?你的问题中是否也有
pom.xml
文件要发布?我使用的是hibernate 5.2.3,我添加了pom.xml
SessionFactory factory = new Configuration().configure()
                .buildSessionFactory();