JPA @CreatedBy@CreatedDate@LastModifiedBy@LastModifiedDate

3 篇文章 0 订阅
3 篇文章 0 订阅

错误更正

上一篇博客中写到重写JPA的源码,经过考虑发现没有必要那么麻烦,只要annotation正确,实体命名和数据库对应是可以不同的

新的做法

    @CreatedBy
    @Column(name = "create_id", nullable = false, length = 50)
    protected String createId;

    @CreatedDate
    @Column(name = "create_time", nullable = false)
    protected Date createTime;

    @LastModifiedBy
    @Column(name = "update_id", length = 50)
    protected String updateId;


    @LastModifiedDate
    @Column(name = "update_time")
    protected Date updateTime;

特别注意

    /*** 默认0,必填,离线乐观锁 */
    @Version
    @Column(name = "version_")
    protected Integer version = 0;

乐观锁所import的version是

    import javax.persistence.Version

而不是JPA中的

    import org.springframework.data.annotation.Version

使用后者虽然不会报错,但是乐观锁不起作用。
而且version = 0,不然多对多或者多对一级联更新的时候会因为页面传上来的对象中version=null导致InvalidDataAccessApiUsageException

org.springframework.dao.InvalidDataAccessApiUsageException: 
org.hibernate.TransientObjectException: object references an unsaved transient instance 
- save the transient instance before flushing: 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值