Bird
Raised Fist0
Spring Bootframework~10 mins

JPA entity with @Entity annotation in Spring Boot - Interactive Code Practice

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to declare a JPA entity class with the correct annotation.

Spring Boot
import jakarta.persistence.[1];

@[1]
public class User {
    private Long id;
    private String name;
}
Drag options to blanks, or click blank then click option'
AEntity
BTable
CColumn
DId
Attempts:
3 left
💡 Hint
Common Mistakes
Using @Table instead of @Entity
Forgetting to import the annotation
Using @Id instead of @Entity
2fill in blank
medium

Complete the code to mark the primary key field with the correct annotation.

Spring Boot
import jakarta.persistence.Entity;
import jakarta.persistence.[1];

@Entity
public class Product {
    @[1]
    private Long id;
    private String name;
}
Drag options to blanks, or click blank then click option'
ATable
BColumn
CGeneratedValue
DId
Attempts:
3 left
💡 Hint
Common Mistakes
Using @Column instead of @Id
Not annotating the primary key field
Using @Table on a field
3fill in blank
hard

Fix the error in the code by choosing the correct annotation to generate the primary key value automatically.

Spring Boot
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.[1];

@Entity
public class Order {
    @Id
    @[1]
    private Long id;
    private String product;
}
Drag options to blanks, or click blank then click option'
AColumn
BTable
CGeneratedValue
DEntity
Attempts:
3 left
💡 Hint
Common Mistakes
Using @Column instead of @GeneratedValue
Forgetting to add @GeneratedValue for auto-generation
Using @Table on a field
4fill in blank
hard

Fill both blanks to complete the JPA entity with a primary key and a column annotation.

Spring Boot
import jakarta.persistence.Id;
import jakarta.persistence.[1];
import jakarta.persistence.[2];

@[1]
public class Customer {
    @Id
    private Long id;
    @[2](name = "customer_name")
    private String name;
}
Drag options to blanks, or click blank then click option'
AEntity
BTable
CColumn
DId
Attempts:
3 left
💡 Hint
Common Mistakes
Using @Table instead of @Entity
Using @Id instead of @Column on the name field
Forgetting to import the annotations
5fill in blank
hard

Fill all three blanks to complete the JPA entity with @Entity, @Id, and @GeneratedValue annotations.

Spring Boot
import jakarta.persistence.[1];
import jakarta.persistence.[2];
import jakarta.persistence.[3];

@[1]
public class Invoice {
    @[2]
    @[3]
    private Long id;
    private Double amount;
}
Drag options to blanks, or click blank then click option'
AEntity
BId
CGeneratedValue
DColumn
Attempts:
3 left
💡 Hint
Common Mistakes
Mixing up @Column with @Id or @GeneratedValue
Forgetting to annotate the primary key
Not importing the correct annotations

Practice

(1/5)
1. What is the main purpose of the @Entity annotation in a Spring Boot application?
easy
A. To mark a class as a database table for JPA
B. To create a REST API endpoint
C. To configure application properties
D. To define a service component

Solution

  1. Step 1: Understand the role of @Entity

    The @Entity annotation tells Spring Boot and JPA that this class represents a table in the database.
  2. Step 2: Differentiate from other annotations

    Other annotations like @RestController or @Service serve different purposes unrelated to database tables.
  3. Final Answer:

    To mark a class as a database table for JPA -> Option A
  4. Quick Check:

    @Entity marks database tables [OK]
Hint: Remember: @Entity means database table class [OK]
Common Mistakes:
  • Confusing @Entity with @Service
  • Thinking @Entity creates REST endpoints
  • Assuming @Entity configures app settings
2. Which of the following is the correct way to declare a JPA entity class with an ID field?
easy
A. @Entity public class User { private Long id; }
B. public class User { private Long id; }
C. @Entity public class User { @Id private Long id; }
D. @Service public class User { @Id private Long id; }

Solution

  1. Step 1: Check for @Entity annotation

    The class must have @Entity to be recognized as a JPA entity.
  2. Step 2: Verify presence of @Id on a field

    Every entity needs a unique identifier marked with @Id to map the primary key.
  3. Final Answer:

    @Entity public class User { @Id private Long id; } -> Option C
  4. Quick Check:

    Entity + Id field = correct syntax [OK]
Hint: Entity needs @Entity and @Id on ID field [OK]
Common Mistakes:
  • Missing @Entity annotation
  • Forgetting @Id on the ID field
  • Using @Service instead of @Entity
3. Given this entity class:
@Entity
public class Product {
  @Id
  private Long id;
  private String name;

  public Product() {}
  public Product(Long id, String name) {
    this.id = id;
    this.name = name;
  }
  public String getName() { return name; }
}

What will happen if you save a Product with id=1 and name="Book" using JPA repository and then retrieve it?
medium
A. The Product is not saved because of missing @Column
B. You get a Product object with id=1 and name="Book"
C. You get a runtime error because no setter for name
D. You get a Product object with id=1 but name is null

Solution

  1. Step 1: Understand JPA entity saving and retrieval

    JPA uses the @Entity class and its fields to save and load data. The constructor and getter allow access to fields.
  2. Step 2: Check if missing setter affects retrieval

    JPA can set fields via reflection even without setters, so name will be loaded correctly.
  3. Final Answer:

    You get a Product object with id=1 and name="Book" -> Option B
  4. Quick Check:

    JPA loads fields even without setters [OK]
Hint: JPA sets fields directly; getters needed to read [OK]
Common Mistakes:
  • Assuming missing setter causes runtime error
  • Thinking @Column is mandatory for saving
  • Believing name will be null without setter
4. Identify the error in this entity class:
@Entity
public class Customer {
  private Long id;
  private String email;

  public Long getId() { return id; }
  public String getEmail() { return email; }
}
medium
A. Missing @Entity annotation
B. Missing default constructor
C. Fields should be public
D. Missing @Id annotation on the id field

Solution

  1. Step 1: Check for @Entity annotation

    The class has @Entity, so it is recognized as an entity.
  2. Step 2: Verify presence of @Id annotation

    The id field lacks @Id, so JPA cannot identify the primary key, causing errors.
  3. Final Answer:

    Missing @Id annotation on the id field -> Option D
  4. Quick Check:

    Every entity needs @Id on primary key [OK]
Hint: Always put @Id on the primary key field [OK]
Common Mistakes:
  • Assuming default constructor is mandatory (JPA provides one)
  • Thinking fields must be public
  • Ignoring missing @Id annotation
5. You want to create a JPA entity Order with a composite primary key made of orderId and productId. Which approach correctly applies the @Entity annotation and primary key setup?
hard
A. Use @Entity on Order and create a separate @Embeddable class for the composite key with @EmbeddedId in Order
B. Use @Entity on Order and mark both fields @Id without extra class
C. Use @Entity on Order and mark only one field @Id, ignore the other
D. Use @Entity on Order and define composite key in application.properties

Solution

  1. Step 1: Understand composite keys in JPA

    JPA requires a separate class annotated with @Embeddable to represent composite keys.
  2. Step 2: Use @EmbeddedId in the entity

    The entity class uses @EmbeddedId to include the composite key class as its primary key.
  3. Final Answer:

    Use @Entity on Order and create a separate @Embeddable class for the composite key with @EmbeddedId in Order -> Option A
  4. Quick Check:

    Composite key needs @Embeddable + @EmbeddedId [OK]
Hint: Composite keys need @Embeddable class + @EmbeddedId field [OK]
Common Mistakes:
  • Marking multiple fields with @Id without composite key class
  • Ignoring one key field in composite key
  • Trying to configure keys in properties file