我正在嘗試使用叛變來持久化一個物體。add 方法應該回傳一個Uni<Entity>參考新持久化(或合并)的物體(我正在使用該isPersistent標志來確定一個物體之前是否已經持久化了)。如果它是由休眠生成的,我還需要對物體的更新 ID 的參考。
@Override
public Uni<Entity> add(Entity entity) {
if(entity.isPersistent()){
return sessionFactory.withSession(s ->s.merge(entity));
}else{
entity.markAsPersistent();
return sessionFactory.withSession(s ->s.persist(entity)); // Error!
}
}
但是,s.persist()回傳一個Uni<Void>. 我嘗試按如下方式修改代碼(導致分離的物體):
return sessionFactory.withSession(s ->s.persist(entity).chain(s::flush).replaceWith(entity));
我應該如何將 映射Uni<Void>到相應的Uni<Entity>,它不是處于分離狀態?
uj5u.com熱心網友回復:
您需要“替換”第二個塊的回傳值:
@Override
public Uni<Entity> add(Entity entity) {
if (entity.isPersistent()) {
return sessionFactory.withSession(s -> s.merge(entity));
} else {
entity.markAsPersistent();
return sessionFactory.withSession(s -> s.persist(entity))
.replaceWith(() -> entity);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/397732.html
