Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java Spring Data App doesn't save sub-objects

I'm trying to build build service, which saves object with sub-objects, but getting error. In result object data fields saved, but sub-object not.

I have the next object. The main is Order and sub-object is Partner:

@Getter
@Setter
@Entity
@Table(name = "orders")
public class Order {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "order_id")
    private int orderId;

    @OneToMany(mappedBy = "order", fetch = FetchType.EAGER,
            cascade = CascadeType.ALL)
    private Set<Partner> partners;
}

@Getter
@Setter
@Entity
@Table(name = "partners")
public class Partner implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "partner_id")
    private int id;

    @ManyToOne(fetch = FetchType.EAGER, optional = false)
    @JoinColumn(name = "order_id", nullable = false)
    private Order order;
}

I use standard embedded method "save" from Spring Jpa Repository:

@Repository
public interface OrdersRepository extends JpaRepository<Order, Integer> {

}

and service, which call this Repository:

@Service public class OrdersServiceImpl implements OrdersService {

@Autowired
private OrdersRepository repository;

@Override
public Order save(Order order) {
    return repository.save(order);
}

}

Does someone have an idea why Partners are not saved?

Thanks a lot!

like image 628
D.K. Avatar asked Feb 13 '26 23:02

D.K.


1 Answers

Because the relationship owner is Partner, so that you need to save the Order first. Or you can put cascade = CascadeType.PERSIST on private Order order;

like image 180
SoT Avatar answered Feb 16 '26 13:02

SoT



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!