java - hibernate5.x映射报错

查看:98
本文介绍了java - hibernate5.x映射报错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

hibernate5.x做xml映射运行报错,找不到实体

报错:

INFO: HHH10001001: Connection properties: {user=root, password=****}
七月 02, 2016 9:44:23 下午 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001003: Autocommit mode: false
七月 02, 2016 9:44:23 下午 org.hibernate.engine.jdbc.connections.internal.PooledConnections <init>
INFO: HHH000115: Hibernate connection pool size: 20 (min=1)
Sat Jul 02 21:44:23 CST 2016 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
七月 02, 2016 9:44:23 下午 org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQLInnoDBDialect
Exception in thread "main" org.hibernate.MappingException: Unknown entity: com.wxmimperio.pojo.User
    at org.hibernate.metamodel.internal.MetamodelImpl.entityPersister(MetamodelImpl.java:620)
    at org.hibernate.internal.SessionImpl.getEntityPersister(SessionImpl.java:1596)
    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:668)
    at org.hibernate.internal.SessionImpl.save(SessionImpl.java:660)
    at org.hibernate.internal.SessionImpl.save(SessionImpl.java:655)
    at HibernateTest.main(HibernateTest.java:34)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)

*.cfg.xml

<hibernate-configuration>
    <session-factory >
        <!--配置数据库连接信息-->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/my_hibernate</property>
        <property name="connection.username">root</property>
        <property name="connection.password">root</property>
        <!--数据库方言-->
        <property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
        <!--配置hbm.xml文件-->
        <mapping resource="com/wxmimperio/pojo/User.hbm.xml"></mapping>
    </session-factory>
</hibernate-configuration>

*.hbm.xml

<hibernate-mapping package="com.wxmimperio.pojo">
    <class name="User" table="user" entity-name="entity">
        <!--表的主键-->
        <id name="id">
            <!--主键生成策略-->
            <generator class="native"></generator>
        </id>
        <!--实体类的名称-->
        <property name="username"></property>
        <property name="password"></property>
    </class>
</hibernate-mapping>

实体类User

package com.wxmimperio.pojo;

public class User {
    private int id;
    private String username;
    private String password;

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = 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;
    }
}

Test主程序

import com.wxmimperio.pojo.User;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;

public class HibernateTest {
    public static void main(String args[]) {
        Configuration cfg = new Configuration().configure();
        ServiceRegistry registry = new StandardServiceRegistryBuilder()
                .applySettings(cfg.getProperties()).build();
        SessionFactory sf = cfg.buildSessionFactory(registry);
        Session session = sf.openSession();
        Transaction ts = session.beginTransaction();
        User user = new User();
        user.setUsername("wxmimperio");
        user.setPassword("123456");
        session.save(user);
        ts.commit();
        session.close();
    }
}

解决方案

加载hibernate.cfg.xml文件问题,5.x后build部分变了。

这篇关于java - hibernate5.x映射报错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆