java如何在Lagom框架中执行删除操作?
我是Lagom框架的新手,我需要知道在这个框架中执行删除操作的正确方法。我使用Java开发,并测试了两种方法:
- 处理删除事件时,我将状态设置为可选。空()但它返回nullPointerException崩溃,并且我的readSide(Cassandra数据库)中的行未被删除
- 我将状态字段添加到实体中,当我处理删除事件时,我将其传递给-1。当我引用我的实体时,我在状态上进行测试。现在和现状!=-1以确保实体已被删除。对于readSide,该行被正确删除
就逻辑而言,我认为第二种方法最符合逻辑,但我想知道Lagom框架是否为开发人员提供了执行删除操作的良好实践
编辑1 这是我的ReadSideHandler代码,如何正确处理空选项
@Override
public ReadSideHandler<AuthenticationEvent> buildHandler() {
return readSide.<AuthenticationEvent>builder("authenticationEventOffset")
.setGlobalPrepare(this::createTables)
.setPrepare(tag -> prepareStatements())
.setEventHandler(AuthenticationLoginEvent.class,
e -> insertAuthentication(e.getAuthentication()))
.setEventHandler(AuthenticationLogoutEvent.class, e -> deleteAuthentication(e.getAccessToken()))
.build();
}
# 1 楼答案
第一种方法是正确的,但应该正确处理读取端的空选项
# 2 楼答案
我终于找到了问题所在。在我的事件课上处理得很糟糕,我使用了先决条件。在我的变量上选中NOTNULL,这显然是错误的。我从代码中删除了这个xpression,一切正常