序言:直接调用原生Save方法会导致null属性覆盖到数据库,使用起来十分不方便。本文提供便捷方法解决此问题。
核心思路
如果现在保存某User对象,首先根据主键查询这个User的最新对象,然后将此User对象的非空属性覆盖到最新对象。
核心代码
直接修改通用JpaRepository的实现类,然后在启动类标记此实现类即可。
一、通用CRUD实现类
public class SimpleJpaRepositoryImpl extends SimpleJpaRepository {
private final JpaEntityInformation entityInformation;
private final EntityManager em;
@Autowired
public SimpleJpaRepositoryImpl(JpaEntityInformation entityInformation, EntityManager entityManager) {
super(entityInformation, entityManager);
this.entityInformation = entityInformation;
this.em = entityManager;
}
/**
* 通用save方法 :新增/选择性更新
*/
@Override
@Transactional
public S save(S entity) {
//获取ID
ID entityId = (ID) entityInfo