简体   繁体   English

org.hibernate.AnnotationException:未为实体:login.Users指定标识符

[英]org.hibernate.AnnotationException: No identifier specified for entity: login.Users

I am getting an error while reuest goes to servlet ,I try alot for resolved this but not get proper solution. 请求servlet时出现错误,我尝试了很多解决方法,但没有找到适当的解决方案。

Registration.java (Servlet class file) Registration.java(Servlet类文件)

package login;

import java.io.IOException;

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.cfg.Configuration;
import org.hibernate.SessionFactory;

@WebServlet("/Registration")
public class Registration extends HttpServlet {
   private static final long serialVersionUID = 1L;


public Registration() {
    super();
 }


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

     String username =  request.getParameter("username");
     String password =  request.getParameter("password");
     String name =  request.getParameter("name");

     Users u = new Users();
     u.setUsername(username);
     u.setPassword(password);
     u.setName(name);

     String uname = u.getUsername();
     System.out.println(uname);
     SessionFactory sessionFactory = new                 Configuration().configure().buildSessionFactory();
     Session session = sessionFactory.openSession();
        session.beginTransaction();
        session.save(u);
        session.getTransaction().commit();
        session.close();
        sessionFactory.close();

}

} }

Users.java this class is used to stored the user information in "Users" table Users.java此类用于将用户信息存储在“用户”表中

package login;
import javax.persistence.Entity;
import javax.persistence.Table;
@Entity
@Table(name="Users")
public class Users {
private String username;
private String password;
private String name;
public String getUsername() {
    return username;
}
public void setUsername(String username) {
    this.username = username;
}
public String getPassword() {
    return password;
}
public void setPassword(String password) {
    this.password = password;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}   
}

hibernate.cfg.xml hibernate.cfg.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration SYSTEM "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
 <session-factory>
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="connection.url">jdbc:mysql://localhost:3306/login</property>
    <property name="connection.username">root</property>
    <property name="connection.password"></property>

    <property name="connection.pool_size">1</property>
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

    <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
    <property name="show_sql">true</property>
    <property name="hbm2ddl.auto">create</property>


      <mapping class ="login.Users" /> 

</session-factory>

Folder structure 资料夹结构

Console Logs 控制台日志

EVERE: Servlet.service() for servlet [Registration] in context with path [/loginapp] threw exception
org.hibernate.AnnotationException: No identifier specified for entity: login.Users
at    org.hibernate.cfg.InheritanceState.determineDefaultAccessType(InheritanceState.java:265)
at org.hibernate.cfg.InheritanceState.getElementsToProcess(InheritanceState.java:211)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:710)
at org.hibernate.boot.model.source.internal.annotations.AnnotationMetadataSourceProcessorImpl.processEntityHierarchies(AnnotationMetadataSourceProcessorImpl.java:245)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess$1.processEntityHierarchies(MetadataBuildingProcess.java:222)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:265)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:83)
at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:418)
at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:87)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:692)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:724)
at login.Registration.doPost(Registration.java:47)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
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:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
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)

You are missing a field that serves as identifier for an entity. 您缺少一个用作实体标识符的字段。 Something like this: 像这样:

    @Id 
    @GeneratedValue
    private long id;

Also do not forget a getter for this field. 也不要忘记此领域的吸气剂。

Hope this helps. 希望这可以帮助。

You also have to use the right import. 您还必须使用正确的导入。

org.springframework.data.annotation.Id => Did not work org.springframework.data.annotation.Id =>无效

javax.persistence.Id => Worked javax.persistence.Id =>正常工作

You didn't specify a primary key: 您没有指定主键:

@Id 
@GeneratedValue
@Column(name = "id")
private int id;

You need to find out which column is unique in your table and assign it as an ID 您需要找出表中哪一列是唯一的,并将其分配为ID

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 org.hibernate.AnnotationException:没有为实体指定标识符 - org.hibernate.AnnotationException: No identifier specified for entity org.hibernate.AnnotationException:未使用JPA XML实体映射为实体指定标识符 - org.hibernate.AnnotationException: No identifier specified for entity using JPA XML entity-mapping 原因:java.lang.IllegalArgumentException:不是托管类型:&原因:org.hibernate.AnnotationException:未为实体指定标识符: - Caused by: java.lang.IllegalArgumentException: Not a managed type: & Caused by: org.hibernate.AnnotationException: No identifier specified for entity: 异常:org.hibernate.AnnotationException:没有为实体指定标识符:jpa.tenants.DataSourceConfig - Exception: org.hibernate.AnnotationException: No identifier specified for entity: jpa.tenants.DataSourceConfig java.lang.RuntimeException:org.hibernate.AnnotationException:未为实体指定标识符 - java.lang.RuntimeException: org.hibernate.AnnotationException: No identifier specified for entity init 方法调用失败; 嵌套异常是 org.hibernate.AnnotationException:没有为实体指定标识符 - Invocation of init method failed; nested exception is org.hibernate.AnnotationException: No identifier specified for entity 如何解决线程“main”org.hibernate.AnnotationException中的错误异常:没有为实体指定标识符:员工 - How to Resolved the error Exception in thread "main" org.hibernate.AnnotationException: No identifier specified for entity: Employee Org.Hibernate.AnnotationException:没有为实体指定标识符我的表中没有 id - Org.Hibernate.AnnotationException: No Identifier Specified For Entity I don't have a id in my table org.hibernate.AnnotationException: @OneToOne 或 @ManyToOne<entity> 引用一个未知实体 - org.hibernate.AnnotationException: @OneToOne or @ManyToOne on <entity> references an unknown entity 获取 org.hibernate.AnnotationException - Getting org.hibernate.AnnotationException
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM