Spring整合JPA时,为实体类添加@Entity注解时提示The type MultipartEntity is deprecated

这个情况是由于导入错了Entity包所导致的。

按住Alt+T时,会有两个关于@Entity的提示 org.hibernate.annotations.Entity 和 javax.persistence.Entity,我们应该使用javax.persistence.Entity。此时就不会出现过时的提示。

@org.hibernate.annotations.Entity 和 @javax.persistence.Entity 的区别:

JPA的Entity类和Hibernate的Entity类都符合Java对象的POJO模型,具体定义如下:
1) JPA 2.1规范的Entity类
Entity类必须被明确声明,这可以通过@javax.persistence.Entity标注或者XML配置文件。
Entity类必须是top-level的类。
为了支持运行时动态代理实现的延迟加载,Entity类必须定义一个public或protected的无参数的构造函数,还可以有其他构造函数。
为了支持运行时动态代理实现的延迟加载,Entity类不能是final的,其中的方法或实例变量都不能是final的。
如果Entity类的对象可能会被远程调用,则Entity类还必须实现java.io.Serializable接口。
Entity类可以是抽象类。Entity类可以继承非Entity类和Entity类,而非Entity类也可以继承Entity类。
Enum或接口不能被声明为Entity。
Entity类的持久化状态是通过Entity类的实例变量表示的。实例变量只能通过Entity类中的方法访问。
2) Hibernate的Entity类基本与JPA 2.1规范的Entity类类似,只有如下区别
Entity类必须定义一个非private(即可以是public、protected或默认)的无参数的构造函数,还可以有其他构造函数。
Entity类不必是top-level的类。
Entity类不必是final的,其中的方法或实例变量也不必是final的。但如果是final的,则无法利用代理的延迟加载功能。
Entity类的实例变量可以被Entity类之外的其他方法访问
Always import @javax.persistence.Entity

@org.hibernate.annotations.Entity是@javax.persistence.Entity的一个补充,但不是后者的替代品

如果想使用@org.hibernate.annotations.Entity所包含的特殊的功能的话,需要在添加@javax.persistence.Entity的基础上增加注释,如下:

1 //optimisticLock 乐观锁
2 @Entity   
3 @org.hibernate.annotations.Entity(optimisticLock=OptimisticLockType.ALL)   
4 public class MyEntity implements Serializable {   
5 ...   
6 }  

Hibernate5-Entity

原文地址:https://www.cnblogs.com/sunyuhua/p/10716488.html

时间: 2024-10-28 11:13:47

Spring整合JPA时,为实体类添加@Entity注解时提示The type MultipartEntity is deprecated的相关文章

JPA学习笔记-Spring整合JPA

Spring 整合 JPA 三种整合方式: -LocalEntityManagerFactoryBean:适用于那些仅使用 JPA 进行数据访问的项目,该 FactoryBean 将根据JPA PersistenceProvider 自动检测配置文件进行工作,一般从"META-INF/persistence.xml"读取配置信息,这种方式最简单,但不能设置 Spring 中定义的DataSource,且不支持 Spring 管理的全局事务 -从JNDI中获取:用于从 Java EE 服

spring整合jpa

1.1.  Spring整合jpa 1.1.1.  新建工程 1.1.2.  引入jar包 1.        所使用hibernat版本:hibernate-release-4.3.7.Final,Lib\jpa目录和lib\required目录下所有的jar包, 2.        mysql驱动包 3.        spring版本spring-framework-4.1.3.RELEASE,libs下所有的jar包 4.        tomcat jdbc连接池 tomcat-jdb

spring整合jpa优化

本篇是针对上一篇<spring整合jpa>文章进行优化 1.1.  使用接口代替dao层 1.1.1.   删除IpersonDao和PersonDaoImpl 1.1.2.   新建PersonDao.java PersonDao.java package com.morris.dao; import org.springframework.data.repository.Repository; import com.morris.entity.Person; public interfac

Spring整合JPA改进办法

在标准JPA中,持久化单元默认被定义在META-INF/persistence.xml文件中,并且通过@Entity注解搜索获得.但是大多数情况下,持久化单元不会仅仅存在一个,并且数据源也不会是一个,基于这个原因,Spring提供了一个可选方案,即通过LocalEntityManagerFactoryBean和LocalContainerEntityManagerFactoryBean进行管理.localEntityManagerFactoryBean扩展功能太少,这个不说,我们以LocalCo

Spring Data Jpa系列教程--------实体解析和关联关系

Spring Data Jpa是基于HIbernate开发的,所以建立实体建的实体和映射关系需要好好好的去了解一下,本文有以下内容,实体管理器介绍,实体与数据库表的映射介绍,关联关系(一对多,多对多)介绍,SpringDataJpa应用分析 ------实体管理器   实体管理器EntityManager是实体与数据库的桥梁(和事务一起发挥作用),相当于Hibenrtae中的session,Mybatis中的sqlSession.使用方法放个小例子吧 @PersistenceContext pr

JPA实体类中的注解

@Entity 标注于实体类上,通常和@Table是结合使用的,代表是该类是实体类@Table 标注于实体类上,表示该类映射到数据库中的表,没有指定名称的话就表示与数据库中表名为该类的简单类名的表名相对应,如果是逆向生成表的话就会以简单类名作为表名 如果指定名称,例如@Table(name="tb_user"),就表示映射到数据库中的tb_userz这个表:@Id 标注于属性上,通常是在get方法上,也可以在属性的声明上. 用于表示该属性作为ID主键@GeneratedValue 主键

spring整合JPA(hibernate)以及jdbctemple

下面的基本的项目部署信息: [c-sharp] view plaincopy <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" /> <!-- jpa  entityManagerFactory--> <bean id="entityManagerFactory" class="org.springf

在实体类中对与记录数量的属性进行修改时,定义相关方法在实体类中,进行修改时方便

在demo.java中有一个private  Integer count;属性,需要对这个属性进行加一和减一 private Integer count; public Integer getCount() { return count; } public void setCount(int count) { this.count = count; } //对属性加一,先判断是否为null,当创建的是新的对象时,对属性加一就可以先设为0,然后加一,不用在再代码中进行判断 public int a

Spring的资源抽象Resource2实体类

一.文件系统资源 FileSystemResource 文件系统资源 FileSystemResource,资源以文件系统路径的方式表示,唯一一个实现了WritableResource接口的类.这个类由2个不可变的属性 file 和 path ,本质上就是一个java.io.File 的包装.这个类的 equals() 和 hashcode() 都通过属性 path 来操作. public class FileSystemResource extends AbstractResource imp