Entity not mapped 错误
对于使用jpa、hibernate这两个框架来说,可能经常一不注意,就会出现这个问题。最近突然遇到这个问题,感觉挺好玩,就记录下来。
一般出现报错, 肯定是先看控制台或者日志,看看有什么错误信息,然后就发现了这个entity not map的错误,一开始是以为实体类的某个字段与数据库映射错误或者@Table(name=“xxx”)中的表名和数据库中没有对应,然后经过仔细检查,发现好像没有一点问题。
感觉很奇怪,然后检查注解,@Entity @Table
也都加了,突然看见了好像导入的@Entity
这个的包有点奇怪,再仔细一看 导入的包是:import org.hibernate.annotations.Entity;
居然呢导入的是 Hibernate中的包。
查看其他实体类,使用的是import javax.persistence.Entity;
使用的是javax中的包。然后重新导包,运行,就可以了。
Hibernate为什么会有这样一个包,并且也是Entity,缺不能映射实体类呢? 经过查询资料(百度),查到了hibernate和javax中的@Entity
的却别:
@javax.persistence.Entity 是 jdk 的标准,Hibernate用来映射实体类
而@org.hibernate.annotations.Entity 的@Entity
注解是Hibernate3扩展的注解,用来增加一些扩展功能: 例如动态sql、乐观锁、定义元数据等:
(1)使用方法:实体类加 两个@Entity即可。
@Entity
@org.hibernate.annotations.Entity
// 例如
@Entity
@org.hibernate.annotations.Entity(optimisticLock=OptimisticLockType.ALL)
public class TableEntity implements Serializable {
...
}
(2)作用:
追加了可能需要的额外的元数据,而这些元数据超出了标准@Entity 中所定义的元数据。
mutable: 此实体是否为可变的
dynamicInsert: 用动态SQL新增
dynamicUpdate: 用动态SQL更新
selectBeforeUpdate: 指明Hibernate从不运行SQL UPDATE除非能确定对象的确已被修改
polymorphism: (指出)实体多态是PolymorphismType.IMPLICIT(默认)还是PolymorphismType.EXPLICIT
optimisticLock: 乐观锁策略(OptimisticLockType.VERSION, OptimisticLockType.NONE, OptimisticLockType.DIRTY 或 OptimisticLockType.ALL)
所以,如果不使用扩展功能等,只需要实体映射,使用@javax.persistence.Entity
即可。
上一篇: 在EntityFramework6中执行SQL语句
下一篇: Python爬虫学习(持续更新)
推荐阅读
-
windows2008下配置iis+mysql+phpmyadmin运行phpmyadmin提示错误
-
phpExcel导出大量数据出现内存溢出错误的解决方法_PHP教程
-
使用Ajax请求后台数据,然后的时候出现Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0的错误。
-
EF(EntityFramework)与mysql使用,取数据报错,linq实体映射错误
-
微信支付集成错误
-
【已解决】前端到后端400错误(The server cannot or will not process the request due to...)
-
关于MySQL绕过授予information_schema中对象时报ERROR 1044(4200)错误
-
C语言指针一些常见的错误用法
-
七牛私有空间资源访问时会时不时的出现401授权错误,同一个资源有时候能访问,有时候不能访问
-
PHP与js搭配的ajax中出现如下错误,不知道什么原因