简体   繁体   English

Hibernate + PostgreSQL引发异常:未知实体

[英]Hibernate + PostgreSQL throws an Exception: Unknown entity

I write a java maven project for restful webservice using jersey + hibernate and having below error : 我使用jersey + hibernate编写了一个用于宁静webservice的Java Maven项目,并出现以下error

javax.servlet.ServletException: org.hibernate.MappingException: Unknown entity: org.asad.dto.logindetail javax.servlet.ServletException:org.hibernate.MappingException:未知实体:org.asad.dto.logindetail

org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:419) org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:419)

org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java: 381) org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:344) org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:381)org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:344)

org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java: 221) org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:221)

hibernate.cfg.xml File: hibernate.cfg.xml文件:

 <?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>


        <!-- Database connection settings -->

        <property name="connection.driver_class">org.postgresql.Drive</property>

        <property 
    name="connection.url">jdbc:postgresql://localhost:5432/logindb</property>

    <property name="connection.username">postgres</property>

        <property name="connection.password">project</property>

        <!-- JDBC connection pool (use the built-in) -->

        <property name="connection.pool_size">1</property>


        <!-- SQL dialect -->

        <property 
    name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>

        <!-- Disable the second-level cache  -->

    <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>


        <!-- Echo all executed SQL to stdout -->

        <property name="show_sql">true</property>

        <!-- Drop and re-create the database schema on startup -->

        <property name="hbm2ddl.auto">update</property>

        <propertyname="connection.driver_class">org.postgresql.Driver</property>

        <!-- Names the annotated entity class -->

        <mapping class="org.asad.dto.logindetail"/>

    </session-factory>

</hibernate-configuration>

The table name is "logindetail". 表名是“ logindetail”。

Database Class: 数据库类:

 @Entity
     @Table (name = "logidetail")  public class logindetail {

    @Id

    int userId;

    String name;

    String password;


    public void setUserId(int i){

        this.userId = i;

    }

    public int getUserId(){

        return userId;

    }

    public void setName(String name){

        this.name  = name;

    }

    public String getName(){

        return name;

    }

    public void setPassword(String pass){

        this.password = pass;

    }

    public String getPassword(){

        return password;

    }}

Main Class: 主类:

 package org.asad.login.login.loginservice; 

import java.util.ArrayList;

import javax.management.Query;

import javax.validation.Validation;

import javax.validation.Validator;

import javax.validation.ValidatorFactory;

import org.asad.dto.logindetail;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configurationimport org.hibernate.classic.Session;

public class LoginService{

    SessionFactory sessionFactory = null;

    Session session = null;

    public String getDatabaseUser(){

        logindetail user = null;

        String name=null;try{

        sessionFactory = new Configuration().configure().buildSessionFactory();

        session = sessionFactory.openSession();

        session.beginTransaction();

        user = (logindetail)session.get(logindetail.class, 2);

        name = user.getName();

        session.getTransaction().commit();

        session.close();

    }catch(Exception e){

       e.printStackTrace();

     }

    return name;

        }}

now this error is coming java.lang.NullPointerException anyone can help me to eliminate this error i will b thankful :) 现在此错误即将到来java.lang.NullPointerException任何人都可以帮助我消除此错误,我将感激:)

Can you check if you imported correct @Entity annotation. 您可以检查是否导入了正确的@Entity批注。

As @Entity comes under two packages one is org.hibernate.annotations.Entity and other one with javax.persistence.Entity . 由于@Entity属于两个包,一个是org.hibernate.annotations.Entity ,另一个是javax.persistence.Entity

Use javax.persistence.Entity to annotate your entity beans. 使用javax.persistence.Entity注释您的实体bean。 Don't import org.hibernate.annotations.Entity . 不要导入org.hibernate.annotations.Entity

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM