最近刚学习了Hibernate框架,老师布置了个作业,让用 Hibernate 4.3 版本的框架来写,但是我的 Myeclipse2017 中,虽然配置了 user library,但是总是布置不了环境,于是,就用 5.1 的版本来做了。
当时报错了这个错了:Exception in thread "main" org.hibernate.MappingException: Unknown entity:beans.Publisher
那,我把代码粘贴一下:
public static void main(String[] args) { /* * <a href="https://beatree.cn/tag/hibernate" title="查看更多关于 Hibernate 的文章" target="_blank">Hibernate</a>4.3 方法 * Configuration conf = new Configuration(). // 不带参数的 configure()方法默认加载 hibernate.cfg.xml 文件, // 如果传入 abc.xml 作为参数,则不再加载 hibernate.cfg.xml,改为加载 abc.xml configure(); ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings (conf.getProperties()).build(); // 以 Configuration 实例创建 SessionFactory 实例 SessionFactory sf = conf.buildSessionFactory(serviceRegistry);*/ //5.1 版本获取 SessionFactory 实例代码 StandardServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().configure().build(); SessionFactory sf=new MetadataSources(serviceRegistry).buildMetadata().buildSessionFactory(); //创建 session Session session = sf.openSession(); // 开始事务 /* * 使用<a href="https://beatree.cn/tag/hibernate" title="查看更多关于 Hibernate 的文章" target="_blank">Hibernate</a>进行操作时(增、删、改)必须显示的调用 Transaction(默认:autoCommit=false)。 * Transaction 的运行与 Session 接口相关,可调用 Session 的 beginTransaction()方法生成一个 Transanction 实例。 * */ Transaction tx = session.beginTransaction(); // 创建出版社对象 Publisher publisher = new Publisher(); Publisher publisher2 = new Publisher(); // 设置出版社相关信息 publisher.setId(2); publisher.setPublisherName("高兴死了"); publisher.setPublisherNo("12345"); session.save(publisher); tx.commit(); session.close(); sf.close();
Hibernate 4.3 其中的一种 获取 SessionFactory 的方法
//实例化 configuration
Configuration con=new Configuration().configure();
//实例化 ServiceRegistry
ServiceRegistry service=new StandardServiceRegistryBuilder().applySettings(con.getProperties()).build();
//创建 SessionFactory 实例
SessionFactory fac=con.buildSessionFactory(service);
而Hibernate 5.1 的获取 SessionFactory 的方法
StandardServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().configure().build();
SessionFactory sessionFactory=new MetadataSources(serviceRegistry).buildMetadata().buildSessionFactory();
我就是用错了方法,才出现错误,改过来用 5.1 的方法就可以了