org.hibernate.annotations.Entity
具有一些额外的属性,这些属性不是javax.persistence.Entity
标准化的。只有在直接使用hibernate的AnnotationConfiguration
或者hibernate是JPA提供者时,这些额外的特性才会起作用。
来自FAQ:
编辑:新链接the specific question:
编辑:新链接the answer:
我使用@org.hibernate.annotations.Entity并获得一个未知实体异常
始终导入@javax.persistence.Entity
@org.hibernate.annotations.Entity完成了@javax.persistence.Entity,但不是替代品
例如,有一个名为optimisticLock
的属性,它告诉Hibernate是否使用标准的版本列还是在更新时比较所有列。这种行为不在JPA规范中,因此为了配置它,您必须使用Hibernate自己的注释中发现的特定扩展。
像这样:
@Entity
@org.hibernate.annotations.Entity(optimisticLock=OptimisticLockType.ALL)
public class MyEntity implements Serializable {
...
}
如果你的项目中使用了@org.hibernate.annotations,假设你想要使用JDBC模板或ibatis,我们需要改变代码。如果我们使用javax.persistence,就不需要改变代码。这是org.hibernate.annotations和javax.persistence之间的主要区别。
我不确定它们之间的区别,但我确定如果您在类路径中有Hibernate Jars,则正在使用Hibernate JPA。Hibernate提供了JPA的实现。即使您使用javax.persistence包,您也在使用Hibernate JPA。
区别可能仅在于命名上。它们可能在Hibernate包空间和javax包空间中都提供相同的类。