javax.persistence.Table.indexes()[Ljavax/persistence/Index;

在Hibernate 4.3中如果使用了@Table注解,在获取session的时候会抛出如下异常

Exception in thread "main" java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;
	at org.hibernate.cfg.annotations.EntityBinder.processComplementaryTableDefinitions(EntityBinder.java:936)
	at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:781)
	at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3762)
	at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3716)
	at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1410)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1844)
	at util.HiberUtils.<clinit>(HiberUtils.java:16)

异常的意思是:在javax.persistence.Table这个类中没有找到indexes()方法

研究半天发现是用注解方式生成表的时候  @Table(name = "user", catalog = "forum")就会抛出异常,

我用的是java EE 6.0, 查找javaEE 6.0的api发现没有indexes()这个方法,

然后查阅java EE 7.0的api发现 有indexes()这个方法,

java EE 7.0 API:http://docs.oracle.com/javaee/7/api/

所以要想使用Hibernate 4.3中的@Table注解就需要用java EE 7.0

但是后来经过测试发现将@Table(name = "user", catalog = "forum") 改成@Entity(name = "user")错误也就不见了。

还有一个奇怪的问题,如果不用main方法和Junit测试获取session,直接在jsp页面进行CRUD操作就不会抛出异常


解决办法:

方法一:

如果你是WEB开发,则可以忽略这个异常。直接在jsp页面操作

方法二:

将@Table(name = "user", catalog = "forum") 改成@Entity(name = "user")

方法三:

将java EE 6.0  换成java EE 7.0


  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值