![](/img/trans.png)
[英]Hibernate unknown entity (not missing @Entity or import javax.persistence.Entity )
[英]Do JPA impementor implement javax.persistence.Entity annotation?
我对谁提供JPA @Entity annotation
有疑问。
我了解JPA是ORM工具(例如休眠)的标准规范,并且这些工具实现了JPA规范。
现在在我的简单项目中,我有一个导入语句:
import javax.persistence.Entity;
我的印象是,由于它是“标准”(JPA)规范,因此JDK将提供一些罐子,其中将包含此注释定义。 我在JDK中搜索了各种jar,但是没有任何具有Entity.class的 .jar文件。
而是在休眠状态下,有一个具有此Entity annotation
定义的jar(jar-> hibearnate-jpa-XX.jar)
那么,这通常意味着这些标准规范不是JDK的一部分,而是由规范实现者提供的吗?
JPA规范是由JCP和一个“专家组”编写的。 专家组负责提供规范(文档),API jar(接口,规范中定义的注释)和用于确认实现是否正确实施规范的TCK(测试兼容性工具包)。 对于JPA,“ TCK”是秘密的,因此公众无法测试JPA提供者的合规性(请弄清楚他们为什么这样做)。
API jar包含@Entity
批注以及规范中定义的所有其他内容。
对于JPA 1.0,专家组提供了API jar,请参见此处 。 对于JPA 2.0和JPA 2.1,专家组由于懒惰而未提供API jar。 因此,诸如DataNucleus
, Hibernate
, EclipseLink
类的JPA提供者必须在其JPA实现旁边提供自己的API jar。 因此,您应该在JPA提供程序API jar中找到@Entity
批注。 例如,在DataNucleus JPA API jar中 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.