java - 表未映射的 Hibernate 消息

标签 java mysql hibernate

我在 mysql 中有这个表:

CREATE TABLE IF NOT EXISTS `realEstate`.`USER` (
  `userID` INT NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(45) NULL,
  `password` VARCHAR(45) NULL,
  `registrationDate` VARCHAR(15) NULL,
  `name` VARCHAR(45) NULL,
  `surname` VARCHAR(45) NULL,
  `phone` VARCHAR(45) NULL,
  `email` VARCHAR(45) NULL,
  `registered` TINYINT(1) NULL,
  PRIMARY KEY (`userID`),
  UNIQUE INDEX `user_id_UNIQUE` (`userID` ASC))
ENGINE = InnoDB;

我尝试使用 hibernate 获取其所有内容。尽管我实现了 .hbm 文件,但我收到错误:用户未映射[来自用户]。我是如何提出这个问题的:

List<Users> users = null;
        Session session = null;
        Transaction transaction = null;
        try {
            SessionFactory factory = HibernateUtil.getSessionFactory();
            session = factory.getCurrentSession();
            transaction = session.beginTransaction();
            Query query = session.createQuery("from USER");
            users = query.list();
            transaction.commit();
        } catch (HibernateException ex) {
            System.out.println("Exception:");
            System.out.println(ex.getMessage());
            if (transaction != null) {
                transaction.rollback();
            }
        } finally {
            /*for(Users user:users){
                System.out.println(user.getName());
            }*/
        }
        System.out.println("Complete");

这是 users.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="Users" table="USER">
        <id name="userID" type="int">
            <column name="userID" />
            <generator class="assigned" />
        </id>
        <property name="username" type="java.lang.String">
            <column name="username" length="45"/>
        </property>
        <property name="password" type="java.lang.String">
            <column name="password" length="45" />
        </property>
        <property name="name" type="java.lang.String">
            <column name="name" length="45"/>
        </property>
         <property name="date" type="java.lang.String">
            <column name="registrationDate" length="45"/>
        </property>
        <property name="surname" type="java.lang.String">
            <column name="surname" length="45"/>
        </property>
        <property name="phone" type="java.lang.String">
            <column name="phone" length="45"/>
        </property>
        <property name="email" type="java.lang.String">
            <column name="email" length="45"/>
        </property>
        <property name="registered" type="boolean">
            <column name="registered" />
        </property>
    </class>
</hibernate-mapping>

一切对我来说似乎都很好,但它不起作用。你能帮我吗?

这是用户类:

public class Users {
    private int user_id;
    private String username;
    private String password;
    private String date;
    private String name;
    private String surname;
    private String phone;
    private String email;
    private boolean registered;

    public int getuserID() {
        return user_id;
    }
    public void setuserID(int user_id) {
        this.user_id = user_id;
    }
    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 getDate() {
        return date;
    }
    public void setDate(String date) {
        this.date = date;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSurname() {
        return surname;
    }
    public void setSurname(String surname) {
        this.surname = surname;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public boolean getRegistered() {
        return registered;
    }
    public void setRegistered(boolean registered) {
        this.registered = registered;
    }

}

这是 hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory name="session1">
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.password"></property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/realestate</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>

        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.format_sql">true</property>
        <property name="hibernate.current_session_context_class">thread</property>


        <property name="hibernate.c3p0.min_size">5</property>
        <property name="hibernate.c3p0.max_size">20</property>
        <property name="hibernate.c3p0.timeout">300</property>
        <property name="hibernate.c3p0.max_statements">50</property>
        <property name="hibernate.c3p0.idle_test_period">3000</property>

        <mapping resource="users.hbm.xml"/>
        <mapping resource="adminstrator.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

这是目录

enter image description here

最佳答案

HQL 中,您应该使用映射的 Entity 的 java 类名和属性名,而不是实际的表名和列名,因此 HQL 应该是:

Query query = session.createQuery("from USERS");

由您在 users.hbm.xml 中提供

关于java - 表未映射的 Hibernate 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25341229/

相关文章:

java - JSoup 忽略关闭 <link> 标签

php - CakePHP 代码生成不适用于没有主键的表 [新手]

php - 如果title_es为空,MYsql想要获取title_en

mysql - FDQuery (Delphi XE6) 上的 "type mismatch expecting AutoInc actual LongWord"

java - 为什么 Hibernate/JPA 在查询中报告空指针异常?

java - MySQLNonTransientConnectionException : No operations allowed after connection closed. 连接

java - GenericHibernateDAO 的方法 findById 中的 "lock" boolean 值是什么意思?

java - 数组的 gson 模型

java - 用于网格可视化的简单 JAVA 包(可能是代码)

java - 无法解决 Java 双端队列迭代错误