Hibernate不能使用@Table和@JoinColumn的问题
Posted zZach
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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删除即可。
以上是关于Hibernate不能使用@Table和@JoinColumn的问题的主要内容,如果未能解决你的问题,请参考以下文章
Hibernate 两次将数据插入到 Join Table 中,导致 Spring Boot 项目中出现“ORA-00001:违反唯一约束”
Hibernate中left join fetch 查询出现重复的对象