Hibernate不能使用@Table和@JoinColumn的问题

近日在使用Hibernate4.3是遇上了奇怪的错误,使用@Table和@JoinColumn都会报错。

一、@Table

代码:

@Entity
@Table(name="user")
public class User {
    // ...省略内容
}

报错信息:

Exception in thread “main” java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;

一开始看到这个问题还挺莫名其妙的,我明明是按视频里说的一模一样啊,各种搜之后终于使用了@Entity(name="user")来代替原来那两句的方法,但是还是感觉挺“委曲求全”。

二、@JoinColumn

代码:

    @OneToOne
    @JoinColumn(name="wifeId")
    public Wife getWife_id() {
        return wife;
    }

错误信息:

Exception in thread “main” java.lang.NoSuchMethodError: javax.persistence.JoinColumn.foreignKey()Ljavax/persistence/ForeignKey;

三、解决方法

发现@JoinColumn也不能用的时候不能忍了,想不出代替的方法,终于在网上苦找一番后发现了问题。

“jar包冲突”

原来是因为我用的是MyEclipse,在创建Web项目时选择了自动导入“Java EE 6 Libraries”,这个Library中的javax.persistence.jar与Hibernate的hibernate-jpa-2.1-api-1.0.0.Final.jar包冲突了(hibernate-jpa-2.1-api-1.0.0.Final.jar里也有一个javax.persistence的包,但是默认是用Java EE 6 Libraries里的包)。

所以,把“Java EE 6 Libraries”删除,或者将其中的javax.persistence.jar删除即可。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值