33import com .fasterxml .jackson .annotation .JsonProperty ;
44import java .util .Date ;
55import java .util .List ;
6- import lombok .AllArgsConstructor ;
7- import lombok .Builder ;
8- import lombok .Data ;
9- import lombok .NoArgsConstructor ;
6+ import lombok .*;
107import org .bson .types .ObjectId ;
8+ import org .springframework .data .annotation .Id ;
119import org .springframework .data .mongodb .core .mapping .Document ;
1210
1311/**
1816 * for awards, IMDB ratings, and Tomatoes ratings.
1917 *
2018 * <p>Note: We use Lombok annotations to reduce boilerplate code:
21- * - @Data : Generates getters, setters, toString , equals, and hashCode
19+ * - @Getter @Setter @EqualsAndHashCode : Generates getters, setters, equals, and hashCode
2220 * - @Builder: Provides a fluent builder pattern for object construction
23- * - @NoArgsConstructor: Generates a no-argument constructor (required by MongoDB driver)
24- * - @AllArgsConstructor: Generates a constructor with all fields
2521 */
26- @ Data
22+ @ Getter
23+ @ Setter
24+ @ EqualsAndHashCode (onlyExplicitlyIncluded = true )
2725@ Builder
28- @ NoArgsConstructor
29- @ AllArgsConstructor
3026@ Document (collection = "movies" )
3127public class Movie {
3228
@@ -77,6 +73,8 @@ private Fields() {
7773 * Can be null for new documents (MongoDB will generate it).
7874 */
7975 @ JsonProperty ("_id" )
76+ @ Id
77+ @ EqualsAndHashCode .Include
8078 private ObjectId id ;
8179
8280 /**
@@ -177,10 +175,9 @@ private Fields() {
177175 /**
178176 * Nested class representing awards information.
179177 */
180- @ Data
178+ @ Getter
179+ @ Setter
181180 @ Builder
182- @ NoArgsConstructor
183- @ AllArgsConstructor
184181 public static class Awards {
185182 /**
186183 * Number of awards won.
@@ -201,10 +198,9 @@ public static class Awards {
201198 /**
202199 * Nested class representing IMDB rating information.
203200 */
204- @ Data
201+ @ Getter
202+ @ Setter
205203 @ Builder
206- @ NoArgsConstructor
207- @ AllArgsConstructor
208204 public static class Imdb {
209205 /**
210206 * IMDB rating (0.0 to 10.0).
@@ -225,10 +221,9 @@ public static class Imdb {
225221 /**
226222 * Nested class representing Rotten Tomatoes rating information.
227223 */
228- @ Data
224+ @ Getter
225+ @ Setter
229226 @ Builder
230- @ NoArgsConstructor
231- @ AllArgsConstructor
232227 public static class Tomatoes {
233228 /**
234229 * Viewer ratings information.
@@ -263,10 +258,9 @@ public static class Tomatoes {
263258 /**
264259 * Nested class for viewer ratings.
265260 */
266- @ Data
261+ @ Getter
262+ @ Setter
267263 @ Builder
268- @ NoArgsConstructor
269- @ AllArgsConstructor
270264 public static class Viewer {
271265 /**
272266 * Viewer rating (0.0 to 5.0).
@@ -287,10 +281,9 @@ public static class Viewer {
287281 /**
288282 * Nested class for critic ratings.
289283 */
290- @ Data
284+ @ Getter
285+ @ Setter
291286 @ Builder
292- @ NoArgsConstructor
293- @ AllArgsConstructor
294287 public static class Critic {
295288 /**
296289 * Critic rating (0.0 to 5.0).
0 commit comments