Bird
Raised Fist0
Spring Bootframework~20 mins

Column mapping with @Column in Spring Boot - Practice Problems & Coding Challenges

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
Challenge - 5 Problems
🎖️
Column Mapping Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
component_behavior
intermediate
2:00remaining
What is the effect of @Column(name = "user_email") on a field?

Consider a Spring Boot entity with a field annotated as @Column(name = "user_email"). What does this annotation do?

Spring Boot
public class User {
  @Column(name = "user_email")
  private String email;
}
AMaps the field 'email' to the database column named 'user_email'.
BRenames the Java field 'email' to 'user_email' in the code.
CCreates a new database column 'email' and ignores 'user_email'.
DAutomatically converts the field value to uppercase before saving.
Attempts:
2 left
💡 Hint

Think about how Java fields connect to database columns.

📝 Syntax
intermediate
2:00remaining
Identify the correct @Column usage to set a column as non-nullable

Which option correctly uses @Column to make a database column NOT NULL?

Spring Boot
public class Product {
  @Column(??? )
  private String name;
}
A@Column(notNull = true)
B@Column(nullable = false)
C@Column(nullable = true)
D@Column(required = true)
Attempts:
2 left
💡 Hint

Check the exact attribute name for nullability in @Column.

🔧 Debug
advanced
2:00remaining
Why does this @Column annotation cause a runtime error?

Given the entity field below, why will the application fail at runtime?

Spring Boot
public class Order {
  @Column(name = "order_date", length = 10)
  private LocalDate date;
}
AThe 'length' attribute is invalid for LocalDate type causing a runtime error.
BThe 'name' attribute must be omitted for LocalDate fields.
CThe field 'date' must be public for @Column to work.
DLocalDate fields cannot be annotated with @Column.
Attempts:
2 left
💡 Hint

Consider which @Column attributes apply to which data types.

state_output
advanced
2:00remaining
What is the database column name for this field?

Given the entity below, what is the exact database column name for the field userName?

Spring Boot
public class Account {
  @Column(name = "user_name")
  private String userName;
}
AUSER_NAME
Busername
Cuser_name
DuserName
Attempts:
2 left
💡 Hint

Look at the name attribute inside @Column.

🧠 Conceptual
expert
2:00remaining
What happens if @Column is omitted on a field?

In a Spring Boot JPA entity, if a field has no @Column annotation, what is the default behavior for database column mapping?

Spring Boot
public class Customer {
  private String address;
}
AThe field is ignored and not mapped to any database column.
BThe application throws an error because @Column is mandatory.
CThe field is mapped to a column named 'column_address' automatically.
DThe field is mapped to a column with the same name as the field, using default settings.
Attempts:
2 left
💡 Hint

Think about default JPA mapping conventions.

Practice

(1/5)
1. What is the main purpose of the @Column annotation in Spring Boot?
easy
A. To define a primary key for the entity
B. To create a new database table automatically
C. To configure the database connection settings
D. To map a Java field to a specific database column

Solution

  1. Step 1: Understand the role of @Column

    The @Column annotation is used to link a Java class field to a database column, specifying details like name and constraints.
  2. Step 2: Differentiate from other annotations

    Other annotations like @Id define primary keys, and database connection settings are configured elsewhere, not with @Column.
  3. Final Answer:

    To map a Java field to a specific database column -> Option D
  4. Quick Check:

    @Column maps field to column [OK]
Hint: Remember: @Column links fields to columns directly [OK]
Common Mistakes:
  • Confusing @Column with @Id for primary keys
  • Thinking @Column creates tables
  • Mixing @Column with database connection setup
2. Which of the following is the correct way to specify a column name and length using @Column?
easy
A. @Column(name = "user_name", length = 50)
B. @Column(columnName = "user_name", size = 50)
C. @Column(name = user_name, length = 50)
D. @Column(name = "user_name", maxLength = 50)

Solution

  1. Step 1: Check correct attribute names

    The correct attributes for @Column are 'name' for column name and 'length' for string length.
  2. Step 2: Validate syntax

    Attributes must be strings in quotes for names; length is an integer. @Column(name = "user_name", length = 50) uses correct syntax and attribute names.
  3. Final Answer:

    @Column(name = "user_name", length = 50) -> Option A
  4. Quick Check:

    Use name and length attributes correctly [OK]
Hint: Use 'name' and 'length' exactly in @Column [OK]
Common Mistakes:
  • Using wrong attribute names like columnName or maxLength
  • Forgetting quotes around string values
  • Using variables without quotes for name
3. Given the entity field:
@Column(name = "email", unique = true, nullable = false)
private String email;

What will happen if you try to save two entities with the same email?
medium
A. The application will throw a null pointer exception
B. The database will throw a unique constraint violation error
C. The second entity will overwrite the first one silently
D. Both entities will be saved without error

Solution

  1. Step 1: Understand unique constraint

    The 'unique = true' attribute enforces that no two rows can have the same value in this column.
  2. Step 2: Predict behavior on duplicate insert

    Trying to save a duplicate email will cause the database to reject the insert/update with a unique constraint violation error.
  3. Final Answer:

    The database will throw a unique constraint violation error -> Option B
  4. Quick Check:

    unique = true prevents duplicates [OK]
Hint: unique=true means no duplicate values allowed [OK]
Common Mistakes:
  • Assuming duplicates are allowed with unique=true
  • Confusing unique with nullable
  • Expecting application to handle duplicates silently
4. Consider this code snippet:
@Column(name = "age", nullable = false)
private Integer age;

What is wrong if the application allows saving an entity with age = null without error?
medium
A. The database column is not set to NOT NULL, so nullable=false is ignored
B. The @Column annotation does not enforce nullability at the database level
C. The field type Integer allows null, so nullable=false has no effect
D. The entity is missing @NotNull validation annotation

Solution

  1. Step 1: Understand nullable attribute

    The 'nullable = false' in @Column tells JPA to generate a NOT NULL constraint in the database schema.
  2. Step 2: Recognize runtime enforcement

    @Column does not validate null values in Java code; it only affects database schema. If schema is not updated, nulls can be saved.
  3. Final Answer:

    The database column is not set to NOT NULL, so nullable=false is ignored -> Option A
  4. Quick Check:

    nullable=false affects DB schema, not Java validation [OK]
Hint: @Column nullable=false sets DB constraint, not Java checks [OK]
Common Mistakes:
  • Thinking nullable=false validates Java field nulls
  • Assuming Integer type disables nulls
  • Confusing @Column with validation annotations
5. You want to map a Java field private String phoneNumber; to a database column named phone_num that must be unique and cannot be null, with a maximum length of 15 characters. Which is the correct @Column annotation to use?
hard
A. @Column(name = "phone_num", unique = false, nullable = true, length = 15)
B. @Column(name = "phoneNumber", unique = true, nullable = false, length = 15)
C. @Column(name = "phone_num", unique = true, nullable = false, length = 15)
D. @Column(name = "phone_num", unique = true, nullable = false)

Solution

  1. Step 1: Match column name and constraints

    The column name must be 'phone_num', unique true, nullable false, and length 15 as per requirements.
  2. Step 2: Check each option

    @Column(name = "phone_num", unique = true, nullable = false, length = 15) matches all requirements exactly. @Column(name = "phoneNumber", unique = true, nullable = false, length = 15) uses wrong column name. @Column(name = "phone_num", unique = false, nullable = true, length = 15) allows null and not unique. @Column(name = "phone_num", unique = true, nullable = false) misses length attribute.
  3. Final Answer:

    @Column(name = "phone_num", unique = true, nullable = false, length = 15) -> Option C
  4. Quick Check:

    Use correct name, unique, nullable, and length [OK]
Hint: Set all attributes explicitly to match requirements [OK]
Common Mistakes:
  • Using Java field name instead of column name
  • Forgetting unique or nullable constraints
  • Missing length attribute for string columns