在使用Hibernate注解做映射时,遇到了一个问题:
java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;
按照以往的经验通常有几个方向来思考这个问题,其一是少引入了jar包,其二jar包引入了,但是可能版本比较低,还有一种是jar包多引入了,引起了jar包的冲突,低版本和合适版本的都引入了,编译器不知道该使用哪个jar包,这样也会造成上面的原因。
很快排除了上面的第一个原因,通过查询发现Hibernate4.3.11有一个比较重要的特性对JPA2.1的支持,通过查询得知J2EE 7.0才开始支持JPA2.1,开发工具采用的是MyEclipse10.0.7,这个版本并不支持J2EE7.0,最初想到一种解决问题思路,如何引入J2EE 7.0 Libraries,顺着这个问题,但是没有成功,后来选择直接在构建路径中移除了J2EE5.0Libraries,结果采用main方法进行测试创建SessionFactory对象成功了,而且在Java实体类上的注解也没有报错,所以猜测是因为引入的低版本的jar包,而且这个jar包就存在J2EE5.0Libraries中与hibernate框架中的jar包引起了冲突。
最终的解决方案:移除 J2EE5.0 Libraries,或者为工具引入 支持JPA2.1的 J2EE 7.0 Libraries,可能是因为MyEclipse工具优先使用Myeclipse中jar包,而且Hibernate框架中有JPA2.1的jar包hibernate-jpa-2.1-api-1.0.0.Final.jar。
猜想: 框架中hibernate-jpa-2.1-api-1.0.0.Final.jar已经包含javax.persistence包中注解了。 J2EE5.0 Libraries的javax.persistence是按照jpa2.0标准定义的注解 ,这两个jar包产生了冲突,这是我个人的理解也许不完全正确,但是通过移除冲突jar包的解决这个问题来看至少可以佐证我的想法。
相关推荐
Files contained in javax.persistence.jar: META-INF/MANIFEST.MF javax.persistence.Access.class javax.persistence.AccessType.class javax.persistence.AssociationOverride.class javax.persistence....
在更现代的项目中,通常会使用JPA 2.x,对应的jar包可能是`javax.persistence-api.jar`或者其他JPA供应商的实现库,如Hibernate的`hibernate-entitymanager.jar`。如果项目依赖EclipseLink,确保添加了完整的Eclipse...
【javax.persistence.jar.zip】是一个包含Java持久化API(Java Persistence API,简称JPA)的压缩文件,这个API是Java EE(Enterprise Edition)平台的核心组成部分,主要用于处理Java对象与数据库之间的映射关系,...
《Java持久化API(JPA)2.0详解——基于javax.persistence-2.0.0.jar包》 Java持久化API(Java Persistence API,简称JPA)是Java平台上的一个标准,用于管理关系数据库中的数据。它为Java应用程序提供了一种对象/...
在`javax.persistence`包中,有几个核心的注解,包括但不限于: 1. `@Entity`:标记一个Java类为数据库中的实体表。每个@Entity表示一个数据库表,类的实例对应于表中的记录。 2. `@Table`:用于指定实体对应的...
javax.persistence-api-2.2.jar框架包,仅供大家学习使用,谢谢!
“Caused by: java.lang.ClassNotFoundException: javax.persistence.Entity”,查找资料发现是缺少jar包. 添加此包就OK了。 更多说明:https://blog.csdn.net/kingmax54212008/article/details/82762624
是一个javax.persistence java资源注解
javax.persistence-2.0.0.jar 解决Hibernate JPA不兼容问题。
`javax.persistence`包是JPA的核心API,包含了一系列接口和注解,用于定义实体、查询语言以及与数据存储交互的策略。 1. **实体管理**:在JPA中,实体是数据库表的映射,由`@Entity`注解标识。`EntityManager`接口...
下载后,执行:java -jar glassfish-persistence-installer-v2.1-b23.jar 把得到的toplink-essentials.jar放在classpath下就可以用了! 在这里可以找到原码:...
在Java开发领域,持久层框架的使用是不可或缺的,而javax.persistence则是Java持久化API(JPA)的核心部分,用于规范对象关系映射(ORM)的标准。SpringSource作为一个知名的开源项目,提供了对JPA的全面支持。本文...
基于git事务82dd749的javax.persistence构建 org.eclipse.persistence/javax.persistence/2.0.5/javax.persistence-2.0.5.jar
基于git事务82dd749的javax.persistence构建 org.eclipse.persistence/javax.persistence/2.2.1/javax.persistence-2.2.1.jar
在描述中提到的问题,很可能是由于项目中缺少了`javax.persistence`相关的jar包导致程序运行时出现错误。 `javax.persistence`规范中的核心注解包括: 1. `@Entity`: 这个注解标记一个Java类为实体类,它是ORM...
Classes contained in javax.jms.jar: javax.transaction.xa.XAResource.class javax.jms.BytesMessage.class javax.jms.Message.class javax.jms.JMSException.class javax.jms.Destination.class javax.jms....
当你遇到“找不到javax.servlet.*”这样的错误时,通常是因为你的项目缺少了这个库,所以需要引入`javax.servlet.jar`来解决问题。 1. **Java Servlet简介** Java Servlet是Java平台上的一个标准,用于扩展服务器...
javax.jms.BytesMessage.class javax.jms.Connection.class javax.jms.ConnectionConsumer.class javax.jms.ConnectionFactory.class javax.jms.ConnectionMetaData.class javax.jms.DeliveryMode.class javax.jms....