Hi,
I am new to axon framework and playing around few scenarios.I am facing an issue with one of the scenario like below.
I have an HiringRequest object and it is having list of HiringRequestNeeds so i have created HiringRequest aggregate with multiple HiringRequestNeeds.
For example: I have one HiringRequest and it has two HiringRequestNeeds,if i want to update one of HiringRequestNeed,how do i change the state of an aggregate with exact updated HiringRequestNeed because HiringRequestNeed doesn’t have any identifier to identify which HiringRequestNeed to be updated.
//NOTE : setting HiringRequestAggregate’s id as target aggregate id of CreateHiringRequestNeedCommand.
public class HiringRequestAggregate {
/** Reference to the aggregate identifier which is typically a string representation of UUID */
@AggregateIdentifier
private String id;
private List needs = new ArrayList();
@CommandHandler
public HiringRequestAggregate(final CreateHiringRequestCommand command) {
apply(HiringRequestCommandsMapper.INSTANCE.eventForCreateHiringCommand(command));
}
@EventSourcingHandler
public void on(final HiringRequestCreatedEvent event) {
this.id = event.getTargetAggregateId();
@CommandHandler
public void createHiringRequestNeed(CreateHiringRequestNeedCommand command){
HiringRequestNeedCreatedEvent hiringRequestNeedCreatedEvent = HiringRequestCommandsMapper.INSTANCE.eventForCreateHiringRequestNeedCommand(command);
apply(hiringRequestNeedCreatedEvent);
}
@EventSourcingHandler
public void on(HiringRequestNeedCreatedEvent hiringRequestNeedCreatedEvent){
HiringRequestNeed hiringRequestNeed = new HiringRequestNeed();
hiringRequestNeed.setComments(hiringRequestNeedCreatedEvent.getComments());
this.needs.add(hiringRequestNeed);
}
@CommandHandler
public void updateHiringRequestNeed(UpdateHiringRequestNeedCommand updateHiringRequestNeedCommand){
HiringRequestNeedUpdatedEvent hiringRequestNeedUpdatedEvent = HiringRequestCommandsMapper.INSTANCE.eventForUpdateHiringRequestNeedCommand(updateHiringRequestNeedCommand);
apply(hiringRequestNeedUpdatedEvent);
}
@EventSourcingHandler
public void on(HiringRequestNeedUpdatedEvent hiringRequestNeedUpdatedEvent){
// how to change state of an aggreate with updated HiringRequestNeed
}
}