Skip to content

feat: refactor DTOs, Entities, and Services to use Lombok annotations#51

Merged
Tyreviel merged 4 commits into
mainfrom
feat-15-lombok-annotations
Apr 14, 2026
Merged

feat: refactor DTOs, Entities, and Services to use Lombok annotations#51
Tyreviel merged 4 commits into
mainfrom
feat-15-lombok-annotations

Conversation

@Tyreviel

@Tyreviel Tyreviel commented Apr 13, 2026

Copy link
Copy Markdown
Collaborator

closes #15

Summary by CodeRabbit

  • Refactor
    • Modernized many mappers, DTOs, entities, controllers and services to use builder patterns and generated boilerplate to reduce redundancy and improve maintainability.
  • Behavior
    • New records and notes receive identifiers earlier in the creation flow to ensure stable IDs before persistence.
  • User impact
    • No changes to user-facing features or APIs.

@coderabbitai

coderabbitai Bot commented Apr 13, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@Tyreviel has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 51 minutes and 40 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 51 minutes and 40 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: ca58e732-c765-4887-a4f5-0145aa49f83e

📥 Commits

Reviewing files that changed from the base of the PR and between 8290234 and 7e2da16.

📒 Files selected for processing (1)
  • src/test/java/org/example/projektarendehantering/DocumentIntegrationTest.java
📝 Walkthrough

Walkthrough

Refactors many DTOs, entities, mappers, controllers, and services to use Lombok and builder-style construction. Several JPA UUID generation annotations were removed from entity id fields. Services/controllers now use @RequiredArgsConstructor and some service methods assign UUIDs before persisting.

Changes

Cohort / File(s) Summary
Entities - Lombok & ID changes
src/main/java/org/example/projektarendehantering/infrastructure/persistence/AuditEventEntity.java, .../CaseEntity.java, .../CaseNoteEntity.java, .../EmployeeEntity.java, .../PatientEntity.java, .../DocumentEntity.java
Added Lombok annotations (@Getter/@Setter/@NoArgsConstructor/@AllArgsConstructor/@Builder) and removed manual getters/setters/constructors. Removed @GeneratedValue(strategy = GenerationType.UUID) from several id fields; builder defaults added for collection fields (e.g., @Builder.Default on lists).
DTOs - Lombok & builders
src/main/java/org/example/projektarendehantering/presentation/dto/AuditEventDTO.java, .../CaseDTO.java, .../CaseNoteDTO.java, .../CaseAssignmentDTO.java, .../EmployeeDTO.java, .../EmployeeCreateDTO.java, .../PatientDTO.java, .../PatientCreateDTO.java, .../CreateCaseForm.java
Replaced explicit constructors and accessors with Lombok (@Data, @Builder, @NoArgsConstructor, @AllArgsConstructor). Added builder support and preserved list defaults via @Builder.Default where applicable.
Mappers - builder-based construction
src/main/java/org/example/projektarendehantering/application/service/AuditEventMapper.java, .../CaseMapper.java, .../CaseNoteMapper.java, .../EmployeeMapper.java, .../PatientMapper.java
Refactored mapping implementations to return DTOs/entities via builder chains (X.builder()...build()) instead of mutable setters/constructors; null checks and field mappings preserved.
Services & Controllers - Lombok constructor injection & UUID assignment
src/main/java/org/example/projektarendehantering/application/service/AuditService.java, .../CaseService.java, .../EmployeeService.java, .../PatientService.java, .../DocumentService.java, src/main/java/org/example/projektarendehantering/presentation/rest/...Controller.java, src/main/java/org/example/projektarendehantering/presentation/web/DocumentUiController.java
Replaced explicit constructors with @RequiredArgsConstructor. Some persistence paths now assign UUID.randomUUID() for entities/notes/events when id was previously uninitialized. DocumentService.uploadDocument and entity creation refactored to use builders.
Small controller wiring
src/main/java/org/example/projektarendehantering/presentation/rest/AuditController.java, .../CaseController.java, .../EmployeeController.java, .../PatientController.java
Switched controllers to Lombok @RequiredArgsConstructor, removing manual constructors; endpoint logic unchanged.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested reviewers

  • OskarLundqvist33
  • mattknatt

Poem

🐰 I hopped through code with nimble feet,
Replaced old setters with builders neat.
Lombok trimmed the boilerplate mess,
UUIDs now spawn when needed — progress!
Hop, commit, and nibble a carrot treat. 🥕

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title accurately describes the main refactoring work: converting DTOs, Entities, and Services to use Lombok annotations throughout the codebase.
Linked Issues check ✅ Passed The changes comprehensively address issue #15 by applying Lombok annotations (@Data, @Builder, @NoArgsConstructor, @AllArgsConstructor, @Getter, @Setter, @RequiredArgsConstructor) across all DTOs, Entities, and Services.
Out of Scope Changes check ✅ Passed All changes are directly related to Lombok annotation implementation. Additionally, manual UUID assignment was added to services where @GeneratedValue was removed from entities, which is a necessary supporting change for the refactoring.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat-15-lombok-annotations

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (3)
src/main/java/org/example/projektarendehantering/presentation/dto/CreateCaseForm.java (1)

13-16: Prefer @Getter/@Setter over @Data for mutable form input objects.

Form classes receiving user input should include only the necessary accessors and constructors. @Data unnecessarily generates toString, equals, and hashCode methods. For a web form carrying sensitive medical case data and patient IDs, removing these unnecessary methods follows the principle of minimizing the surface area exposed through generated code.

Suggested diff
 import lombok.AllArgsConstructor;
 import lombok.Builder;
-import lombok.Data;
+import lombok.Getter;
 import lombok.NoArgsConstructor;
+import lombok.Setter;
 
@@
-@Data
+@Getter
+@Setter
 `@Builder`
 `@NoArgsConstructor`
 `@AllArgsConstructor`
 public class CreateCaseForm {
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@src/main/java/org/example/projektarendehantering/presentation/dto/CreateCaseForm.java`
around lines 13 - 16, Replace the Lombok `@Data` on the CreateCaseForm class with
explicit `@Getter` and `@Setter` to avoid generating toString/equals/hashCode; keep
the existing `@NoArgsConstructor`, `@AllArgsConstructor` and `@Builder` annotations so
constructors and builder remain available while preventing automatic generation
of sensitive toString/equals/hashCode methods for CreateCaseForm.
src/main/java/org/example/projektarendehantering/presentation/dto/CaseDTO.java (1)

13-17: Avoid @Data on DTOs with mutable collections (notes).

On CaseDTO, generated equals/hashCode/toString from @Data includes notes, which can become costly and brittle for mutable object graphs.

♻️ Proposed change
 import lombok.AllArgsConstructor;
 import lombok.Builder;
-import lombok.Data;
+import lombok.Getter;
 import lombok.NoArgsConstructor;
+import lombok.Setter;
@@
-@Data
+@Getter
+@Setter
 `@Builder`
 `@NoArgsConstructor`
 `@AllArgsConstructor`
 public class CaseDTO {

Also applies to: 26-27

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@src/main/java/org/example/projektarendehantering/presentation/dto/CaseDTO.java`
around lines 13 - 17, Replace the class-level Lombok `@Data` on CaseDTO because it
generates equals/hashCode/toString that include the mutable notes collection;
instead use the explicit Lombok annotations that keep getters/setters but
exclude notes from equality and toString (for example, replace `@Data` with
`@Getter`, `@Setter`, `@Builder`, `@NoArgsConstructor`, `@AllArgsConstructor` and add
`@EqualsAndHashCode`(exclude = "notes") and `@ToString`(exclude = "notes")). Update
the annotations on the CaseDTO class and verify the notes field remains
unchanged; this keeps generated accessors but avoids expensive or brittle
equality/toString behavior involving the notes collection.
src/main/java/org/example/projektarendehantering/presentation/dto/AuditEventDTO.java (1)

11-15: Replace @Data with explicit annotations and limit toString() output for security hardening.

@Data generates toString() over all fields. This DTO contains sensitive audit information (principalName, queryString, clientIp, userAgent) that could be unexpectedly logged if the object is serialized or used in error handling. Use @ToString(onlyExplicitlyIncluded = true) to restrict toString() to only non-sensitive fields.

♻️ Proposed change
 import lombok.AllArgsConstructor;
 import lombok.Builder;
-import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
 import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.ToString;
@@
-@Data
+@Getter
+@Setter
+@EqualsAndHashCode
+@ToString(onlyExplicitlyIncluded = true)
 `@Builder`
 `@NoArgsConstructor`
 `@AllArgsConstructor`
 public class AuditEventDTO {
 
+    `@ToString.Include`
     private UUID id;
+    `@ToString.Include`
     private Instant occurredAt;
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@src/main/java/org/example/projektarendehantering/presentation/dto/AuditEventDTO.java`
around lines 11 - 15, Remove the Lombok `@Data` on class AuditEventDTO and replace
it with explicit annotations: add `@Getter`, `@Setter`, `@Builder`, `@NoArgsConstructor`
and `@AllArgsConstructor`, plus `@ToString`(onlyExplicitlyIncluded = true); then
mark only non-sensitive fields with `@ToString.Include` so that sensitive fields
(principalName, queryString, clientIp, userAgent) are excluded from toString()
output. Ensure any equals/hashCode needs are handled explicitly (e.g., add
`@EqualsAndHashCode` if desired) rather than relying on `@Data`.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@src/main/java/org/example/projektarendehantering/infrastructure/persistence/EmployeeEntity.java`:
- Around line 30-32: Remove the JPA-driven ID generation so the app-controlled
UUIDs are respected: in EmployeeEntity delete the `@GeneratedValue`(strategy =
GenerationType.UUID) annotation so Hibernate won't override IDs that
EmployeeMapper.toEntity() sets via UUID.nameUUIDFromBytes(...) or the fallback
set in EmployeeService.createEmployee() (UUID.randomUUID()). Ensure only the `@Id`
and the UUID field remain so application-assigned IDs persist.

---

Nitpick comments:
In
`@src/main/java/org/example/projektarendehantering/presentation/dto/AuditEventDTO.java`:
- Around line 11-15: Remove the Lombok `@Data` on class AuditEventDTO and replace
it with explicit annotations: add `@Getter`, `@Setter`, `@Builder`, `@NoArgsConstructor`
and `@AllArgsConstructor`, plus `@ToString`(onlyExplicitlyIncluded = true); then
mark only non-sensitive fields with `@ToString.Include` so that sensitive fields
(principalName, queryString, clientIp, userAgent) are excluded from toString()
output. Ensure any equals/hashCode needs are handled explicitly (e.g., add
`@EqualsAndHashCode` if desired) rather than relying on `@Data`.

In
`@src/main/java/org/example/projektarendehantering/presentation/dto/CaseDTO.java`:
- Around line 13-17: Replace the class-level Lombok `@Data` on CaseDTO because it
generates equals/hashCode/toString that include the mutable notes collection;
instead use the explicit Lombok annotations that keep getters/setters but
exclude notes from equality and toString (for example, replace `@Data` with
`@Getter`, `@Setter`, `@Builder`, `@NoArgsConstructor`, `@AllArgsConstructor` and add
`@EqualsAndHashCode`(exclude = "notes") and `@ToString`(exclude = "notes")). Update
the annotations on the CaseDTO class and verify the notes field remains
unchanged; this keeps generated accessors but avoids expensive or brittle
equality/toString behavior involving the notes collection.

In
`@src/main/java/org/example/projektarendehantering/presentation/dto/CreateCaseForm.java`:
- Around line 13-16: Replace the Lombok `@Data` on the CreateCaseForm class with
explicit `@Getter` and `@Setter` to avoid generating toString/equals/hashCode; keep
the existing `@NoArgsConstructor`, `@AllArgsConstructor` and `@Builder` annotations so
constructors and builder remain available while preventing automatic generation
of sensitive toString/equals/hashCode methods for CreateCaseForm.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 38466995-29fb-4b59-8607-a721d8434ff2

📥 Commits

Reviewing files that changed from the base of the PR and between 192f3d9 and 5d0256d.

📒 Files selected for processing (23)
  • src/main/java/org/example/projektarendehantering/application/service/AuditEventMapper.java
  • src/main/java/org/example/projektarendehantering/application/service/AuditService.java
  • src/main/java/org/example/projektarendehantering/application/service/CaseMapper.java
  • src/main/java/org/example/projektarendehantering/application/service/CaseNoteMapper.java
  • src/main/java/org/example/projektarendehantering/application/service/CaseService.java
  • src/main/java/org/example/projektarendehantering/application/service/EmployeeMapper.java
  • src/main/java/org/example/projektarendehantering/application/service/EmployeeService.java
  • src/main/java/org/example/projektarendehantering/application/service/PatientMapper.java
  • src/main/java/org/example/projektarendehantering/application/service/PatientService.java
  • src/main/java/org/example/projektarendehantering/infrastructure/persistence/AuditEventEntity.java
  • src/main/java/org/example/projektarendehantering/infrastructure/persistence/CaseEntity.java
  • src/main/java/org/example/projektarendehantering/infrastructure/persistence/CaseNoteEntity.java
  • src/main/java/org/example/projektarendehantering/infrastructure/persistence/EmployeeEntity.java
  • src/main/java/org/example/projektarendehantering/infrastructure/persistence/PatientEntity.java
  • src/main/java/org/example/projektarendehantering/presentation/dto/AuditEventDTO.java
  • src/main/java/org/example/projektarendehantering/presentation/dto/CaseAssignmentDTO.java
  • src/main/java/org/example/projektarendehantering/presentation/dto/CaseDTO.java
  • src/main/java/org/example/projektarendehantering/presentation/dto/CaseNoteDTO.java
  • src/main/java/org/example/projektarendehantering/presentation/dto/CreateCaseForm.java
  • src/main/java/org/example/projektarendehantering/presentation/dto/EmployeeCreateDTO.java
  • src/main/java/org/example/projektarendehantering/presentation/dto/EmployeeDTO.java
  • src/main/java/org/example/projektarendehantering/presentation/dto/PatientCreateDTO.java
  • src/main/java/org/example/projektarendehantering/presentation/dto/PatientDTO.java

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
src/main/java/org/example/projektarendehantering/application/service/CaseService.java (1)

64-71: ⚠️ Potential issue | 🟠 Major

Don't assign managers as ownerId during creation.

assignUsers() later enforces at Line 136 that ownerId must reference a doctor, but this branch stores a manager's userId() when a manager creates the case. That leaves newly created cases in a state your own validation rejects and makes doctor-scoped queries/ACL checks miss them until somebody reassigns the case.

Suggested fix
-        if (isDoctor(actor) || isManager(actor)) {
+        if (isDoctor(actor)) {
             entity.setOwnerId(actor.userId());
         }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@src/main/java/org/example/projektarendehantering/application/service/CaseService.java`
around lines 64 - 71, The creation path in CaseService sets
entity.setOwnerId(actor.userId()) for managers which later violates
assignUsers() validation that ownerId must be a doctor; change the logic in the
case creation method (where CaseEntity entity = caseMapper.toEntity(caseDTO) and
actor is checked with isDoctor/isManager) so that entity.setOwnerId(...) is only
called when isDoctor(actor) is true (do not set ownerId for managers), leaving
ownerId null for manager-created cases so assignUsers()/doctor-scoped ACLs
remain consistent.
src/main/java/org/example/projektarendehantering/application/service/AuditService.java (1)

62-71: ⚠️ Potential issue | 🔴 Critical

Always generate a fresh audit-event ID here.

The conditional check allows caller-supplied IDs to pass through to save(). Since AuditEventEntity uses an application-assigned ID strategy (no @GeneratedValue), Spring Data JPA's save() will perform an UPDATE (merge) instead of INSERT when a non-null ID is present, potentially overwriting existing audit records and breaking the append-only audit trail.

Suggested fix
-        if (event.getId() == null) {
-            event.setId(UUID.randomUUID());
-        }
+        event.setId(UUID.randomUUID());
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@src/main/java/org/example/projektarendehantering/application/service/AuditService.java`
around lines 62 - 71, The record method in AuditService currently lets
caller-supplied IDs through which can cause save() to perform UPDATEs; always
overwrite the event ID to a fresh UUID before persisting (i.e., call
event.setId(UUID.randomUUID()) unconditionally in AuditService.record), keep the
existing occurredAt fallback behavior (set if null), continue to sanitize via
sanitizeAuditPayload(event.getQueryString()), and then call
auditEventRepository.save(event) so every audit record is inserted with a new
application-assigned ID.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In
`@src/main/java/org/example/projektarendehantering/application/service/AuditService.java`:
- Around line 62-71: The record method in AuditService currently lets
caller-supplied IDs through which can cause save() to perform UPDATEs; always
overwrite the event ID to a fresh UUID before persisting (i.e., call
event.setId(UUID.randomUUID()) unconditionally in AuditService.record), keep the
existing occurredAt fallback behavior (set if null), continue to sanitize via
sanitizeAuditPayload(event.getQueryString()), and then call
auditEventRepository.save(event) so every audit record is inserted with a new
application-assigned ID.

In
`@src/main/java/org/example/projektarendehantering/application/service/CaseService.java`:
- Around line 64-71: The creation path in CaseService sets
entity.setOwnerId(actor.userId()) for managers which later violates
assignUsers() validation that ownerId must be a doctor; change the logic in the
case creation method (where CaseEntity entity = caseMapper.toEntity(caseDTO) and
actor is checked with isDoctor/isManager) so that entity.setOwnerId(...) is only
called when isDoctor(actor) is true (do not set ownerId for managers), leaving
ownerId null for manager-created cases so assignUsers()/doctor-scoped ACLs
remain consistent.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: cbed68c6-7582-422b-988b-f5c39623e28e

📥 Commits

Reviewing files that changed from the base of the PR and between 5d0256d and 700d947.

📒 Files selected for processing (8)
  • src/main/java/org/example/projektarendehantering/application/service/AuditService.java
  • src/main/java/org/example/projektarendehantering/application/service/CaseService.java
  • src/main/java/org/example/projektarendehantering/application/service/PatientService.java
  • src/main/java/org/example/projektarendehantering/infrastructure/persistence/AuditEventEntity.java
  • src/main/java/org/example/projektarendehantering/infrastructure/persistence/CaseEntity.java
  • src/main/java/org/example/projektarendehantering/infrastructure/persistence/CaseNoteEntity.java
  • src/main/java/org/example/projektarendehantering/infrastructure/persistence/EmployeeEntity.java
  • src/main/java/org/example/projektarendehantering/infrastructure/persistence/PatientEntity.java
🚧 Files skipped from review as they are similar to previous changes (2)
  • src/main/java/org/example/projektarendehantering/application/service/PatientService.java
  • src/main/java/org/example/projektarendehantering/infrastructure/persistence/CaseEntity.java

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@src/main/java/org/example/projektarendehantering/infrastructure/persistence/CaseEntity.java`:
- Around line 24-25: The test is creating a CaseEntity without an ID which
causes save() to fail; in DocumentIntegrationTest where CaseEntity is
instantiated, call caseEntity.setId(UUID.randomUUID()) (or
UUID.nameUUIDFromBytes(...) if you need deterministic IDs) on the CaseEntity
before invoking caseRepository.save(caseEntity) so the entity has an ID prior to
persistence; locate the instantiation of CaseEntity in DocumentIntegrationTest
and add the setId(...) call before the save() invocation.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: c2235f8f-f662-4bc2-bef5-61ce171423bf

📥 Commits

Reviewing files that changed from the base of the PR and between 700d947 and 8290234.

📒 Files selected for processing (10)
  • src/main/java/org/example/projektarendehantering/application/service/CaseMapper.java
  • src/main/java/org/example/projektarendehantering/application/service/DocumentService.java
  • src/main/java/org/example/projektarendehantering/infrastructure/persistence/CaseEntity.java
  • src/main/java/org/example/projektarendehantering/infrastructure/persistence/DocumentEntity.java
  • src/main/java/org/example/projektarendehantering/presentation/dto/CaseDTO.java
  • src/main/java/org/example/projektarendehantering/presentation/rest/AuditController.java
  • src/main/java/org/example/projektarendehantering/presentation/rest/CaseController.java
  • src/main/java/org/example/projektarendehantering/presentation/rest/EmployeeController.java
  • src/main/java/org/example/projektarendehantering/presentation/rest/PatientController.java
  • src/main/java/org/example/projektarendehantering/presentation/web/DocumentUiController.java
✅ Files skipped from review due to trivial changes (1)
  • src/main/java/org/example/projektarendehantering/presentation/rest/AuditController.java
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/main/java/org/example/projektarendehantering/application/service/CaseMapper.java

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Use Lombok annotations for Entities

1 participant