由于这篇文章,我找到了解决办法
enter link description here
public interface SequenceRepository {
int getNext(String sequenceName);
}
以及每个数据库的实现:
@Profile("oracle")
@Component("oracleSequenceRepository")
public class OracleSequenceRepository implements SequenceRepository{
private final DataSource dataSource;
@Autowired
public OracleSequenceRepository(@Qualifier("dataSource") DataSource dataSource) {
this.dataSource = dataSource;
}
@Transactional(readOnly = true)
@Override
public int getNext(String sequenceName) {
AbstractSequenceMaxValueIncrementer incr = new OracleSequenceMaxValueIncrementer(this.dataSource, sequenceName);
return incr.nextIntValue();
}
}
和
@Profile("postgre")
@Component("postgresSequenceRepository")
public class PostgreSequenceRepository implements SequenceRepository{
private final DataSource dataSource;
@Autowired
public PostgreSequenceRepository(@Qualifier("dataSource") DataSource dataSource) {
this.dataSource = dataSource;
}
@Transactional(readOnly = true)
@Override
public int getNext(String sequenceName) {
AbstractSequenceMaxValueIncrementer incr = new PostgresSequenceMaxValueIncrementer(this.dataSource, sequenceName);
return incr.nextIntValue();
}
}