我有一个模型:
public class ABC implements Serializable {
private int baseId;
private Integer aId;
private Integer bId;
private Boolean isReal;
private TimeStamp updateTime;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "base_id", nullable = false)
public int getBaseId() {
return baseId;
}
public void setBaseId(int baseId) {
this.baseId = baseId;
}
@Basic
@Column(name = "a_id", nullable = false)
public Integer getAId() {
return aId;
}
public void setAId(Integer aId) {
this.aId = aId;
}
@Basic
@Column(name = "b_id", nullable = false)
public Integer getBId() {
return bId;
}
public void setBId(Integer bId) {
this.bId = bId;
}
@Basic
@Column(name = "is_real")
public Boolean getIsReal() {
return isReal;
}
public void setIsReal(Boolean isReal) {
this.isReal = isReal;
}
@Basic
@Column(name ="update_time")
public Timestamp getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Timestamp updateTime) {
this.updateTime = updateTime;
}
}
字符串
我有一个控制器类:
@RestController
@RequestMapping(path = "${serverconfig.api-base-path}/base")
public class BaseController {
/**
* Instance of an logger
*/
private static final Logger LOG =
LoggerFactory.getLogger(BaseController.class);
/**
* Base repository
*/
private BaseRepository baseRepository;
/***
*
* @param baseRepository
*/
public BaseController(BaseRepository baseRepository) {
LOG.trace("BaseRepository constructor method.");
this.baseRepository = baseRepository;
}
@PostMapping(path = Route.UPDATE_IS_REAL)
// @Transactional
public ABC updateIsReal(@Valid @RequestBody
@RequestParam("baseId") int baseId,
@RequestParam("isReal") boolean isReal){
ABC abc = baseRepository.findByBaseId(baseId);
Date date= new Date();
Timestamp ts = new Timestamp(date.getTime());
abc.setBaseId(baseId);
abc.setIsReal(isReal);
abc.setUpdateTime(ts);
return baseRepository.save(abc);
}
}
型
我的仓库类:
@Repository
public interface BaseRepository extends
JpaRepository<ABC, Integer> {
List<ABC> findByAId(Integer aId);
ABC findByBaseId(Integer baseId);
}
型
数据库表有一个条目:
"base_id": 1,
"a_Id": 1,
"b_Id": 1,
"is_real": null,
"update_time": null
型
当我调用端点时,它不会给出错误并返回:
"base_id": 1,
"aId": 1,
"bId": 1,
"isReal": yes,
"updateTime": 018-10-01T18:30:56.765+0000
型
但是当我查询数据库时,那里的记录没有更新。我不明白我做错了什么。当我尝试进行rest调用时,我提供了id,而该id存在于数据库中。
2条答案
按热度按时间dhxwm5r41#
使用
save
,更改不需要立即刷新到DB中,可能会保留在内存中,直到发出flush或commit命令。使用
saveAndFlush
,更改将立即刷新到DB。但是,如果您刷新事务中的更改并且不提交它们,则直到该事务中的提交之前,这些更改仍然对外部事务不可见。
在BaseController中尝试更改
字符串
到
型
更多信息在这里和这里
0lvr5msh2#
是的,它的工作原理只是取代“创建”与“更新”
spring.jpa.hibernate.ddl-auto=update