目的
为了统计初始化统计,实体采用 JPA CascadeType.PERSIST,CascadeType.REMOVE 新增和删除时关联,去除统计在业务中带事务对 统计实体的影响。
问题
但是 这个鬼CascadeType.PERSIST的实现比较诡异,无法初始化数据。
- 无法带入id 源码会认为你不是一个新的实体,真鸡儿难受,不知道hibernate实现时怎么想的。
2.添加 @GeneratedValue(generator = "jpa-uuid") 使用自动生成id 后可以被识别为新增实体,但是无法带入默认数据,让我及其难受。
解决方法
只能完全按照hibernate 的设计思路去弄了,我也很无奈。在统计表加上默认值:
@Entity
@Table(name = "activity_statistic")
@GenericGenerator(name = "jpa-uuid", strategy = "uuid")
public class ActivityStatistic {
@Id
@Column(length = 37)
@GeneratedValue(generator = "jpa-uuid")
private String id;
@Column
private Integer participatedNumber = 0;
@Column
private Integer lockedNumber = 0;
@Column
private Date updateTime = new Date();
@Column
private Date createTime = new Date();
/**
getter....setter ....
**/
}
如果有更好的方法
请一定要给我留言,谢谢
总结
得到了jpa 的好处,也失去了部分自由。怀念mybatis 。
网友评论