文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

JPA中如何使用@EntityListeners注解

2023-06-20 18:56

关注

这篇文章给大家介绍JPA中如何使用@EntityListeners注解,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

JPA实体类监听器@EntityListeners注解的使用

被@Prepersist注解的方法 ,完成save之前的操作。

被@Preupdate注解的方法 ,完成update之前的操作。

被@PreRemove注解的方法 ,完成remove之前的操作。

被@Postpersist注解的方法 ,完成save之后的操作。

被@Postupdate注解的方法 ,完成update之后的操作。

被@PostRemovet注解的方法 ,完成remove之后的操作。

JPA中如何使用@EntityListeners注解

自定义实体类监听类:

import org.springframework.stereotype.Component;import javax.persistence.PostPersist;import javax.persistence.PostUpdate;import javax.persistence.PrePersist;import javax.persistence.PreUpdate;public class TestEntityListeners {@PrePersistpublic void PrePersist(Object entity){System.out.println("开始保存--"+entity.toString());}@PreUpdatepublic void PreUpdate(Object entity){System.out.println("开始更新--"+entity.toString());} @PostPersistpublic void PostPersist(Object entity){System.out.println("结束保存--"+entity.toString());}        @PostUpdatepublic void PostUpdate(Object entity){System.out.println("结束更新--"+entity.toString());}}

实体类上增加注解:

@EntityListeners(value = {TestEntityListeners.class})
@Entity@Table(name = "product")@EntityListeners(value = {TestEntityListeners.class})public class Product {private int id;private String productId;private String productName;    //getter setter toString()}

写两个测试保存、更新的方法:

import com.goods.evaluate.entity.Product;import com.goods.evaluate.service.TestService1;import com.goods.evaluate.repository.ProductRepository;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional; import java.util.Optional; @Servicepublic class TestService implements TestService1 { @Autowiredprivate ProductRepository productRepository; @Transactionalpublic void testSave(){Optional<Product> product = productRepository.findById(10);productRepository.save(product.orElse(null));System.out.println("保存。。。");} @Transactionalpublic void testUpdate(){productRepository.updateProduct("test10");System.out.println("更新。。。");}}

执行结果:

JPA中如何使用@EntityListeners注解

未执行监听器内容? 暂不清楚是什么原因

这是Application的配置:

@SpringBootApplication@EnableSpringConfigured@EnableJpaAuditing@EnableAspectJAutoProxy(proxyTargetClass=true)public class EvaluateApplication { public static void main(String[] args) {SpringApplication.run(EvaluateApplication.class, args);} }

@MappedSupperclass、@EntityListeners注解注意事项

1. @MappedSupperclass注解

(1) 该注解标注在类上,用来标识父类;

(2) 该注解标识的类不能映射到数据库,被标识的类的属性必须通过子类来映射;

(3) 该注解标识了类之后,不能再有@Entity和@Table注解标识该类

(4) 标识有该注解的类,通常属性上用以下注解@Id @GeneratedVale(strategy=GenerationType.IDENTITY) 、

@CreateDate 、 @CreateBy、@LastModifiedBy、@LastModifiedDate等注解用在父类上,子类基础该父类即可,

并在子类标注@Table和@Entity

2.@EntityListeners(AuditingEntityListener.class)注解

(1) 该注解用于监听实体类,在save、update之后的状态

(2) 使用了@EntityListeners(AuditingEntityListener.class)之后,记得在Application

启动类上加@EnableJpaAuditing,不然@CreateDate,@LastModifiedBy不生效

3.启用@EnableJpaAuditing,配置AuditorAware实现类

(1)只有使用了@EnableJpaAuditing注解,@CreateDate @LastModifiedBy等注解才会生效;

(2) 只有实现了AuditorAware接口,才会指定@CreateBy用户名信息。

//AuditorAware 实现类,指定当前操作用户信息@Configurationpublic class UserAuditorConfig implements AuditorAware<String> {    @Override    public Optional<String> getCurrentAuditor() {        return Optional.of(SpringSecurityHolder.currentUserName());    }}

关于JPA中如何使用@EntityListeners注解就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯