Spring Boot JPA取消插入前查询(存在就合并),实现报错“唯一约束”

GanLunatic 2017-10-11 09:15:29
近日学习使用Spring Boot,使用到JPA(底层模式用的就是Hibernate),发现一个很奇怪的问题,调用save方法时,插入已存在数据并不会报错(唯一约束),而是会合并(更新数据)

怎么让他插入重复数据时报错呢!!!!!


public interface ManMenuDao1 extends JpaRepository<ManMenu, String>{

}

@Autowired
private ManMenuDao1 manMenuDao;

@ResponseBody
@RequestMapping("/add.do")
public String add(HttpServletRequest request, ManMenu menu, ModelMap map){
manMenuDao.save(menu);
JSONObject json = new JSONObject();
json.put("status", "y");
json.put("info", "新增成功");
return json.toString();
}



查看发现save调用的实现类【org.springframework.data.jpa.repository.support.SimpleJpaRepository】实现方法体,先判断是否存在,不存在就插入,存在就合并。

@Transactional
public <S extends T> S save(S entity) {

if (entityInformation.isNew(entity)) {
em.persist(entity);
return entity;
} else {
return em.merge(entity);
}
}


...全文
818 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
煮青菜 2017-10-11
  • 打赏
  • 举报
回复
楼主。你这个怎么会被更新喃?不应该会更新的 你试试 把这 ManMenu menu 做二个测试对象,在controller里设置好 其他一样id 不一样,然后保存他们 。还有你的对象里id加一个这个@GeneratedValue(generator="system-uuid") @GenericGenerator(name="system-uuid",strategy="uuid") 这个是自动生成id,保存不填id值 。

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧