CascadeType.ALL applies all cascade operations automatically.
Which cascade type detaches child entities when the parent is detached?
ACascadeType.REMOVE
BCascadeType.PERSIST
CCascadeType.MERGE
DCascadeType.DETACH
✗ Incorrect
CascadeType.DETACH detaches child entities from the persistence context with the parent.
When using CascadeType.MERGE, what happens?
AChild entities are deleted
BChild entities are saved for the first time
CChild entities are updated along with the parent
DChild entities are detached
✗ Incorrect
CascadeType.MERGE updates child entities when the parent entity is updated.
Describe the different cascade types in Spring Boot JPA and their behaviors.
Think about what happens to child entities when you save, update, delete, detach, or refresh the parent.
You got /6 concepts.
Explain why cascade types are useful in managing entity relationships in Spring Boot.
Consider how cascade types help keep related data in sync without extra code.
You got /4 concepts.
Practice
(1/5)
1. What does the CascadeType.ALL option do in Spring Boot JPA?
easy
A. It applies all cascade operations including persist, merge, remove, refresh, and detach.
B. It only cascades the persist operation to related entities.
C. It disables all cascade operations.
D. It only cascades the remove operation to related entities.
Solution
Step 1: Understand CascadeType.ALL meaning
CascadeType.ALL means all cascade operations are applied to related entities automatically.
Step 2: Identify included operations
These operations include persist, merge, remove, refresh, and detach, covering all common entity lifecycle events.
Final Answer:
It applies all cascade operations including persist, merge, remove, refresh, and detach. -> Option A
Quick Check:
CascadeType.ALL = all cascade operations [OK]
Hint: ALL means every cascade action is applied automatically [OK]
Common Mistakes:
Thinking ALL only means persist or remove
Confusing cascade with fetch types
Assuming cascade disables operations
2. Which of the following is the correct syntax to apply cascade persist on a JPA relationship in Spring Boot?
easy
A. @OneToMany(cascade = "persist")
B. @OneToMany(cascade = CascadeType.PERSIST)
C. @OneToMany(cascade = {"persist"})
D. @OneToMany(cascade = CascadeType.ALL.PERSIST)
Solution
Step 1: Recall correct cascade syntax
The cascade attribute expects an array or single enum value of type CascadeType.
Step 2: Validate each option
@OneToMany(cascade = CascadeType.PERSIST) uses correct enum CascadeType.PERSIST. String-based options like "persist" or {"persist"} are incorrect. CascadeType.ALL.PERSIST uses invalid enum chaining.
Final Answer:
@OneToMany(cascade = CascadeType.PERSIST) -> Option B
Quick Check:
Use CascadeType enums, not strings [OK]
Hint: Use CascadeType.PERSIST enum, not string quotes [OK]
Common Mistakes:
Using string values instead of enum constants
Trying to chain enums like ALL.PERSIST
Omitting the cascade attribute entirely
3. Given the following code snippet, what happens when parentRepository.delete(parent) is called?
@Entity
class Parent {
@OneToMany(cascade = CascadeType.REMOVE)
List<Child> children;
}
medium
A. An exception is thrown because cascade REMOVE is invalid here.
B. Only the parent entity is deleted; children remain in the database.
C. Both parent and all its children are deleted from the database.
D. Children are detached but not deleted; parent is deleted.
Solution
Step 1: Understand CascadeType.REMOVE effect
CascadeType.REMOVE means deleting the parent also deletes all related children automatically.
Step 2: Apply to the delete operation
Calling delete on parent triggers removal of parent and cascades delete to all children in the list.
Final Answer:
Both parent and all its children are deleted from the database. -> Option C
Quick Check:
REMOVE cascades delete to children [OK]
Hint: REMOVE cascades delete to related entities [OK]
Common Mistakes:
Assuming children remain after parent delete
Confusing REMOVE with DETACH or REFRESH
Thinking cascade REMOVE causes errors
4. Identify the error in this code snippet related to cascade types:
@Entity
class Order {
@OneToOne(cascade = CascadeType.MERGE)
Payment payment;
}
// Later in code
orderRepository.save(order);
What issue might occur?
medium
A. The payment entity will not be saved if it is new, causing an error.
B. The cascade MERGE will cause duplicate payment entries.
C. The code will throw a syntax error due to cascade misuse.
D. The order entity will not be saved because cascade is missing.
Solution
Step 1: Understand CascadeType.MERGE behavior
CascadeType.MERGE only updates existing entities; it does not persist new ones automatically.
Step 2: Analyze save operation with new payment
If payment is new (not yet saved), save(order) won't persist payment, causing an error or missing data.
Final Answer:
The payment entity will not be saved if it is new, causing an error. -> Option A
Quick Check:
MERGE does not persist new entities [OK]
Hint: MERGE updates only; use PERSIST to save new entities [OK]
Common Mistakes:
Assuming MERGE saves new entities
Confusing syntax errors with runtime behavior
Ignoring cascade effects on related entities
5. You have a Customer entity with a @OneToMany relationship to Order entities. You want to ensure that when a customer is deleted, all their orders are also deleted, but when an order is updated, the customer should not be affected. Which cascade type configuration is best?
hard
A. @OneToMany(cascade = CascadeType.DETACH)
B. @OneToMany(cascade = CascadeType.ALL)
C. @OneToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
D. @OneToMany(cascade = CascadeType.REMOVE)
Solution
Step 1: Identify cascade needed for delete
To delete all orders when customer is deleted, CascadeType.REMOVE is required.
Step 2: Avoid affecting customer on order update
Using only REMOVE avoids cascading updates or persists from orders to customer, so customer stays unchanged on order update.
Final Answer:
@OneToMany(cascade = CascadeType.REMOVE) -> Option D
Quick Check:
REMOVE cascades delete only, no update cascade [OK]
Hint: Use REMOVE to cascade deletes only, not updates [OK]
Common Mistakes:
Using ALL cascades causing unwanted updates
Using PERSIST or MERGE alone missing delete cascade