Java 试图保存数据时执行隔离工作时出错
我有以下方法:Java 试图保存数据时执行隔离工作时出错,java,hibernate,sqlite,spring-data-jpa,Java,Hibernate,Sqlite,Spring Data Jpa,我有以下方法: List<BinValue> binValues = Arrays .stream(data) ... .collect(Collectors.toList()); binValueRepo.deleteByStatId(databaseGlobals.getMarriedStat().getId()); // for(BinValue binValue : binValues) { // b
List<BinValue> binValues = Arrays
.stream(data)
...
.collect(Collectors.toList());
binValueRepo.deleteByStatId(databaseGlobals.getMarriedStat().getId());
// for(BinValue binValue : binValues) {
// binValueRepo.save(binValue);
// }
binValueRepo.save(binValues);
如果我一个一个地做,那么一切都会正常(但速度很慢)
要填充BinValue,我使用以下代码:
BinValue ans = new BinValue();
ans.setBin(bin);
ans.setRegion(region);
...
即,我没有填写主键字段
其定义如下:
@Entity
@Table(name = "bin_values")
@NoArgsConstructor
@AllArgsConstructor
public class BinValue {
@Id
@Column(name="id")
@GeneratedValue(generator="sqlite")
@TableGenerator(name="sqlite", table="sqlite_sequence",
pkColumnName="name", valueColumnName="seq",
pkColumnValue="bin_values")
@Getter
@Setter
private long id;
显然,将max connections设置为1可以解决此问题
@Bean
public DataSource dataSource() {
BasicDataSource ans = new BasicDataSource();
ans.setDriverClassName("org.sqlite.JDBC");
ans.setUrl("jdbc:sqlite:" + sqliteDatabaseFile().getAbsolutePath());
ans.setMaxTotal(1);
return ans;
}
显然,将max connections设置为1可以解决此问题
@Bean
public DataSource dataSource() {
BasicDataSource ans = new BasicDataSource();
ans.setDriverClassName("org.sqlite.JDBC");
ans.setUrl("jdbc:sqlite:" + sqliteDatabaseFile().getAbsolutePath());
ans.setMaxTotal(1);
return ans;
}