Skip to main content

Aggregate identifier must be non-null

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.

For this I have force fully passed a random variable to CreateRemarkCommand() which is given below: Users.kt class CreateRemarkEvent(val id: Int, val remarkDto: RemarkDto) : BaseEvent(); class CreateRemarkCommand(val id: Int, val remarkDto: RemarkDto) : BaseCommand(); RemarksController: public BaseResponseDto storeRemarks(@RequestBody RemarkDto remarkDto){ remarkDto.setRemarkDate(new Date()); remarkDto.setUserType(UserType.SUBSCRIBER); int remarkAggregate = Integer.parseInt(RandomStringUtils.randomNumeric(6).toString()); CreateRemarkCommand remarkCommand = new CreateRemarkCommand(remarkAggregate, remarkDto); commandBus.dispatch(new GenericCommandMessage<>(remarkCommand)); log.info("Dispatched command"); return BaseResponseDto.builder() .statusCode(StatusCode.SUCCESS) .message("Remarks Created.") .build(); } EventSourcingHandler: @EventSourcingHandler public void on(CreateRemarkEvent event) { RemarkDto remarkDto = event.getRemarkDto(); this.id = event.getId(); this.adminId = remarkDto.getAdminId(); this.userId = remarkDto.getUserId(); this.userType = remarkDto.getUserType(); this.remark = remarkDto.getRemark(); this.remarkDate = remarkDto.getRemarkDate(); } @EventHandler: @EventHandler public void handle(CreateRemarkEvent event) { RemarkDto remarkDto = event.getRemarkDto(); UserRemarks remarks = new UserRemarks(); remarks.setUserId(remarkDto.getUserId()); remarks.setAdminId(remarkDto.getAdminId()); remarks.setUserType(remarkDto.getUserType()); remarks.setRemark(remarkDto.getRemark()); remarks.setRemarkDate(remarkDto.getRemarkDate()); remarksQueryRepository.save(remarks); log.info("Successfully saved remarks of user Id" + remarkDto.getUserId()); } @CommandHandler: @CommandHandler public void handle(CreateRemarkCommand command) throws Exception { remarksRepository.newInstance(() -> new UserRemarks(command.getId(), command.getRemarkDto())); } RemarkAggregate: public class UserRemarks { @AggregateIdentifier private Integer id; private String remark; private Integer adminId; private Integer userId; private UserType userType; private Date remarkDate; public UserRemarks(int id, RemarkDto remarkDto) { apply(new CreateRemarkEvent(id, remarkDto)); }

Comments

Popular posts from this blog

Q & A Chapter 1 | Internet Basics | Class 10 CBSE | Computer Application

 Q & A of Chapter 1 Internet Basics A. Tick the correct options – 1. (b) TCP/IP 2. (a) Internet Service Provider 3. (a) URL 4. (b) HTTP 5. (a) Bridge 6. (a) home page 7. (d) All of these 8. (b) Domain Naming System 9. (b) Rules 10. (d) ARPANET B. Very Short Answer Type Questions – 1. In the URL http://www.myfirm.co.in/about.html , what do the following components depict? (a) http                                                 (b) in (a) Http represents a type of server and the protocol on the Internet (b) ‘in’ represents the domain extension of the website. 2. In the URL http://www.favmusic.com/contactus.html what does www.favmusic stand for? www.favmusic represents the domain name i.e. favmusic in www. 3. What does FTP stands for? FTP stands for File Transfer Protocol. 4. Differentiate between webpage and home page. A webpage refers to an electronic page usually written in HTML. It may contain text, images, graphics or hyperlinks. Th

Bit by Bit | Chapter 6 - Graphics and Sound in QB64 | QBasic | Class 7 CBSE | Computer Application

Bit by Bit | Chapter 6 - Graphics and Sound in QB64 A. Tick the correct option. 1. (d) screen mode 0 2. (b) 640 x 350 3. (d) White 4. (a) Lower-Right 5. (c) PSET 6. (c) Generate a tone for a short duration B. Fill in the blanks. 1. CIRCLE 2. PAINT 3. PLAY 4. Graphic 5. Pixels 6. Box C. True or False. 1. True 2. False 3. False 4. True 5. True 6. True D. Answer the following questions. 1. What is the use of SCREEN statement? The SCREEN statement is used to set the screen mode for displaying graphics. There are many screen modes and each screen modes have their own number which is from SCREEN 1 to SCREEN 13. The various screen modes differ in resolution. 2. What is a pixel? How is it related to resolution? The graphics which is displaying on the computer screen is made up of thousands of dots called pixel. Pixel stands for picture element. The number of pixels in an image determines the resolution of the image. Higher the resolution, cleaner the image will appear. 3. What is the differenc

Q & A Chapter 2 | Internet Services | Class 10 CBSE | Computer Application

 Q & A of Chapter 2 A. Tick the correct option – 1. (b) Browser 2. (a) surfing 3. (a) downloading 4. (d) FTP 5. (b) e-mail 6. (c) chat 7. (a) @ 8. (c) Acronyms 9. (d) Emoticons 10. (a) newsgroup B. Very short answer questions – 1. Name a few search engines. Which is the most popular one? Some common search engines are Bing, Google, Ask, Yahoo and MSN. The most popular search engine is Google. 2. What is an Acronym of FTP? File Transfer Protocol. 3. What is a newsreader? Give an example. A newsreader is a software tool or utility used to browse through newsgroup postings. A very popular newsreader in use today is Microsoft Outlook Express. 4. Name three sites that support e-mail services. Gmail, Outlook and Yahoo are three sites that support e-mail services. 5. What is the difference between attachments and FTP? Attachments are the files which are send through an e-mail for communication, while in FTP transfer of files takes place between FTP server and FTP clients and no communicat