.map() 不 return 更新的持久化对象

.map() does not return the updated persisted object

我正在尝试使用新创建的 TicketToken 对象创建新的数据库条目。然后我想用外键字段上生成的 id 更新 Ticket 对象。我很好地创建了 TicketToken 对象,它与生成的值一起出现在数据库中,但是在映射期间,该对象具有空字段。

Uni<Long> tokenUni = ticketService.findTicketById(ticketId).map(Ticket::getTicketTokenId);

    Uni<Long> newTokenId = tokenUni.onItem().ifNull().switchTo(Uni.createFrom().item(new TicketTokenId())
            .chain(ticketTokenId -> tokenIdService.persistTicketTokenId(ticketTokenId))
            .map(createdToken -> {
                log.info(createdToken.toString());
                ticketService.findTicketById(ticketId).onItem().invoke(ticket -> {
                    ticket.setTicketTokenId(createdToken.getTokenId());
                    ticketService.updateTicket(ticket).subscribe().with(item -> log.info("Successfully updated ticket -> " + item.toString()));
                }).subscribe().with(item -> log.info("Updated ticket with tokenId"));
                return createdToken.tokenId;
            })
    );

第一个日志应该有一个类似 {id: 1, field2: null, field3: null, ...} 的 TicketTokenId 对象,但它有一个空对象 {id: null, field2: null, field3: null, ...},这意味着它没有 return 实际的持久化对象。 我怎样才能获得 id,以便我可以 link 它在另一个对象之后?

我修好了。我没有使用 id 更新持久化对象的原因是因为 persistTicketTokenId 方法只使用了 Panache persist 方法。使用 persistAndFlush

方法后我不得不冲洗它
public Uni<TicketTokenId> persistTicketTokenId(@Valid TicketTokenId ticketTokenId) {
    // For now, ticket creation is restricted to admin accounts. Later it will be implemented for venue users
    if (this.currentUser.getRole() != Roles.ADMIN) {
        log.warn("User does not have permissions to create a ticket");
        return Uni.createFrom().failure(new ForbiddenException());
    }
    return Panache.withTransaction(ticketTokenId::persistAndFlush);