记一下写项目过程碰到的个问题
在写建设银行atm项目的时候,使用jpa,想实现打印操作记录,需要在每一次业务操作之后把操作记录的详情加入数据库表,使用了save()方法,但是由于该方法在更新数据库前会默认先检查主键id是否为空,为空的话进行插入insert操作,如果不为空则对记录进行update更新操作,导致想插入每一条记录实现不了,只能保存最后一次的操作记录。
因为是通过新建记录对象,然后再调用add()方法插入,所以尝试过换一下每次新建的对象的名称,但是不行;也试过去设置事务,因为他在save()执行后不会立刻提交,看了一些博客说在save()后面调用flush(),但是也不行,想换成手动提交事务,也弄不了。
最后改了一下数据库表字段,给记录操作记录的表加了个自增id作为主键,然后在每一次进行业务操作之后,都新建记录对象,然后再给对象的属性设置值,不需要给id设置,每一次id都会发生变化,这样就保证了save()每次都会执行insert而不是update。

浙公网安备 33010602011771号