关于初学Hibernate遇到的一些问题

最近在学习java ee以及JPA和Hibernate框架这一块. 出现了一些小问题,特此向大家分享一下.

第一:

No Persistence provider for EntityManager named  异常


Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named firstjpa
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:56)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34)
at Main.main(Main.java:10)

在编写我的第一个jpa程序时就遇到了如上问题,于是各种查资料,各种折腾.

 有的解决方案中提到

要下载 hibernate-entitymanager.jar包 然后导入. 我很纳闷,明明是对着书上做的,为嘛人家不导这个包照样能行?  出于人类的好奇,我还是试了下 ,  果断不行.

最后又开始苦逼的查资料,最后在http://www.cnblogs.com/sos-blue/archive/2011/10/31/2230312.html 这位老兄的博客中找到了解决方案.

于是我在 环境变量的classpath的末尾处中添加了F:\hibernate-distribution-3.6.6.Final\lib     也就是hibernate的静态库.

然后重新编译了一下程序.  上述的错误就消失了,转而出现了如下异常信息:

Exception in thread "main" javax.persistence.PersistenceException: Invalid persistence.xml.Error parsing XML (line-1 : column -1): cvc-elt.1: Cannot find the declaration of element 'persistence'.
好吧  继续查资料
百度了一下   发现关于这个异常的信息的处理几乎没有,无奈,只能转而向google求助.  最后在一篇老外的论坛中找到了解决之道

http://stackoverflow.com/questions/20176545/javax-persistence-persistenceexception-jpahibernate


讲的很详细,老外就是专业.

这里我就大致总结一下出错原因:

Supported JPA Versions

JPA 1.0: ORM 3.2+
JPA 2.0: ORM 3.5+
JPA 2.1: ORM 4.3+

Note that newer ORM releases are backwards compatible with older JPA versions (ex: ORM 4.3 with JPA 1.0). However, newer ORM releases may not be compatible with older JPA containers.

原来是JPA版本问题    

这是我原来persistence的声明    其中version 为2.1,但是我所下载hibernate的版本为3.6.6.于是乎异常就产生了

<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">

解决方案如下:

<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" version="2.0">

将persistence的声明改为如上格式,再度编译程序,  妥了~


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值