java - 如何在 jooq 查询中获取 springboot 事务的数据
问题描述
所以我在jooq中有一个关于在spring-boot事务中获取数据的问题。我使用事务来保存基础数据,然后我想使用 jooq 来获取这些数据。但是我发现我获取的内容是空的。
String sql = dslContext.select().from(Tables.SALES_INVENTORY).getSQL();
System.out.println(sql);
Result<Record> fetch1 = dslContext.select().from(Tables.SALES_INVENTORY).fetch();
System.out.println(fetch1);
String groupbySql =
dslContext
.select(Tables.SALES_INVENTORY.ITEM_ID, sum(Tables.SALES_INVENTORY.ON_HAND_QTY))
.from(Tables.SALES_INVENTORY)
.groupBy(Tables.SALES_INVENTORY.ITEM_ID)
.getSQL();
System.out.println(groupbySql);
Result<Record2<UUID, BigDecimal>> fetch =
dslContext
.select(Tables.SALES_INVENTORY.ITEM_ID, sum(Tables.SALES_INVENTORY.ON_HAND_QTY))
.from(Tables.SALES_INVENTORY)
.groupBy(Tables.SALES_INVENTORY.ITEM_ID)
.fetch();
System.out.println(fetch);
List<SalesInventoryEntity> all = salesInventoryRepository.findAll();
all.forEach(s -> System.out.println(s));
Jooq 的 SQL 是正确的,但无法找到并返回数据,就好像我使用 JPA @Transactional 来执行我的测试方法一样。我使用 jpa-repository 来获取数据,它找到了正确的数据。
所以我的主要问题是如何在 JPA 事务中获取正确的数据?
这是我用来初始化基础数据的内容。它是一个测试方法,它的类是@Transactional,所以这意味着该方法也是@Transactional?
public void initSalesInventories() {
List<SalesInventoryEntity> salesInventories = Lists.newArrayList();
ItemEntity itemEntity = itemRepository.findById(itemId1).get();
int i = 0;
for (StockLocationEntity stockLocationEntity : stockLocationEntities) {
SalesInventoryEntity salesInventoryEntity = new SalesInventoryEntity();
salesInventoryEntity.setStockLocation(stockLocationEntity);
salesInventoryEntity.setSalesOrganization(usSalesOrgEntity);
salesInventoryEntity.setItem(itemEntity);
salesInventoryEntity.setItemClass(ItemClass.SALEABLE);
salesInventoryEntity.setOnHandQty(100);
salesInventoryEntity.setReservedQty(0);
salesInventoryEntity.setAvailableQty(100);
salesInventoryEntity.setLeadTime(5);
DocumentType[] values = DocumentType.values();
salesInventoryEntity.setDocType(values[i % 7]);
String code = "TO-201906112010000" + i;
i++;
salesInventoryEntity.setDocCode(code);
salesInventories.add(salesInventoryEntity);
}
salesInventoryRepository.saveAll(salesInventories);
}
初始化我的基础数据后,我使用 jooq 读取数据,但一无所获。我不知道 jooq 是不能读取其他事务的数据还是 jooq 只是从数据库中读取实际数据。如果您对此有所了解,请给我一些建议。
解决方案
推荐阅读
- oracle - 分区时拆分分区出错
- nginx - websocket连接上的nginx send()未准备好(11:资源暂时不可用)
- python - 使用 Tensorflow 2 处理文本数据“错误:尝试填充到比输入元素更小的尺寸”
- javascript - ontouchstart 在移动设备上表现怪异?
- python-3.x - MacOS和Ubuntu之间的Python编码差异导致UnicodeEncodeError
- python - 数组字段上的 MongoDB find_one 每次都返回文档,即使没有匹配
- ruby-on-rails - 如何在 ruby 中允许和验证参数?
- python - 未捕获 pyodbc 异常
- python - 代码在 chrome 中的 Jupyter notebook 上运行,不要在相同环境的 VSCode 中运行
- python - 不再支持 Python 2.7 时的 GraphLab 安装