Hibernate: mappedBy names the owning side

The side without mappedBy owns the foreign key. Updating only the inverse side writes nothing.

Code
@Entity class Order {
    @OneToMany(mappedBy = "order")     // inverse side
    List<OrderItem> items = new ArrayList<>();

    void addItem(OrderItem i) {        // keep BOTH sides in sync
        items.add(i);
        i.setOrder(this);
    }
}

@Entity class OrderItem {
    @ManyToOne @JoinColumn(name = "order_id")   // owning side
    Order order;
}
Output
items.add(item) alone -> no SQL, the FK is never set.
addItem(item)         -> insert into order_items (order_id, ...) values (?, ...)
Advertisement

Run this yourself in the Online Java Compiler, spin up a live REST API in the API Sandbox, or practise with Java interview questions.

Published 2026-08-11