我尝试用Axon配置cqrs和事件源。SeatReseveCreateCommand工作正常。但是SeatReserveUpadateCommand工作不正确。
这是我的SeatReserve集合
@Aggregate
public class SeatReserve {
@AggregateIdentifier
private String id;
private String seatid;
private Date date;
@SuppressWarnings("unused")
private SeatReserve() {
}
@CommandHandler
public SeatReserve(SeatReseveCreateCommand seatReseveCreateCommand) {
apply(new SeatReseveCreateEvent(seatReseveCreateCommand.getMyid(), seatReseveCreateCommand.getSeatId(),
seatReseveCreateCommand.getDate()));
}
@CommandHandler
public SeatReserve(SeatReserveUpadateCommand upadateCommand) {
apply(new SeatReserveUpadateEvent(id, upadateCommand.getSeatId()));
}
@EventSourcingHandler
public void on(SeatReseveCreateEvent seatReseveCreateEvent) {
this.id = seatReseveCreateEvent.getId();
this.seatid = seatReseveCreateEvent.getSeatId();
this.date = seatReseveCreateEvent.getDate();
}
@EventSourcingHandler
public void on(SeatReserveChangeEvent upadateEvent) {
seatid = upadateEvent.getSeatId();
}
}
这是我的控制器
@RestController
public class TestController {
private final CommandGateway commandGateway;
public TestController(CommandGateway commandGateway) {
this.commandGateway=commandGateway;
}
@PostMapping
public String fileComplaint(@RequestBody Map<String, String> request) {
String id = UUID.randomUUID().toString();
SeatReseveCreateCommand command=new SeatReseveCreateCommand(id,request.get("seatid"),new Date(request.get("date")));
commandGateway.send(command);
return id;
}
@PatchMapping
public String fileComplaintUpdate(@RequestBody Map<String, String> request) {
SeatReserveUpadateCommand command= new SeatReserveUpadateCommand(request.get("id"),request.get("seatid"));
commandGateway.send(command);
return request.get("id");
}
}
更新导致此错误
2018-01-03 10:44:53.608 WARN 11138 --- [nio-8085-exec-1] o.a.c.gateway.DefaultCommandGateway : Command 'com.thamira.research.api.bankaccount.SeatReserveUpadateCommand' resulted in org.axonframework.eventsourcing.IncompatibleAggregateException(Aggregate identifier must be non-null after applying an event. Make sure the aggregate identifier is initialized at the latest when handling the creation event.)
我怎么解决这个。
问题是您的update命令被定义为构造函数。该命令应转到已存在的聚合实例。
将命令处理程序更改为:
@CommandHandler
public void handle(SeatReserveUpadateCommand upadateCommand) {...}
应该能解决问题。
使用axon框架我有一个错误: 应用事件后,聚合标识符必须是非空的。确保在处理创建事件时最迟初始化了聚合标识符。我使用这个StorageEngine:
我已经升级到Xcode 7,突然我的一个目标无法使用“宏名称必须是标识符”消息构建。此目标的调试配置构建正常,我可以在设备上运行它,但发布配置不会构建。 错误指向目标的.pch文件,但对于许多其他目标(包括已发布的目标),相同的.pch文件构建正常。 以下是错误消息: 这是。pch文件: 我已经尝试过清理和Xcode重启。 我将非常感谢任何关于如何深入挖掘并找到问题所在的建议。
我正在使用SODA for Java存储和检索Oracle12c DB中的文档。我正在效仿这个例子。 这一例外背后的原因将是什么?
这是我的程序:
问题内容: 我正在尝试在Jenkins / Hudson上配置我的电子邮件,并且不断收到错误消息: 我已经在网上看到了大量有关该错误的信息,但是我没有得到任何帮助。我在Fedora Linux(不是OpenJDK)上使用Sun的JDK。 这是我尝试过的一些方法。我试着从以下这个建议后,但复制从Windows的cacerts到托管詹金斯没有工作,我的Fedora箱。我尝试按照本指南进行操作,因为我试
我正在学习Java 8,在Java的归约运算部分。util。stream的包摘要,它说: 更正式地说,标识值必须是组合器函数的标识。这意味着对于所有u,组合器。应用(恒等式,u)等于u。此外,组合器函数必须是关联的,并且必须与累加器函数兼容:对于所有u和t,组合器。应用(u,累加器。应用(恒等式,t))必须等于累加器()。应用(u,t)。 我不明白为什么身份值必须是组合器函数的身份。我认为“组合器