I'm implementing one-to-many relationship using Spring Data JDBC (1.0.10.RELEASE), where i.e. one Customer can have many Orders. When executing JOIN query I can see in DEBUG that after performing JOIN query, there are executed additional queries for each Order by its ID to get order data which seems completely redundant.
As a result when returning list of customers I get x results where x is a number of orders. So I get x customer objects which seem to be mapped fine (one-to-many relationship with orders also is mapped correctly), however they are repeated for each order.
Here is DB schema:
create sequence seq_customer start 1;
create table customer (
id integer default nextval('seq_customer'),
name varchar(100) not null,
surname varchar(100) not null
constraint pk_customer primary key (id)
);
create sequence seq_customer_order start 1;
create table customer_order (
id integer default nextval('seq_customer_order'),
customer_id integer not null,
created_date timestamp not null,
constraint pk_customer_order primary key (id),
constraint fk_customer_order_id foreign key (customer_id) references customer (id)
);
When mapping foreign key in Customer class I use:
@Column("customer_id")
private Set<OrderEntity> orders;
Query:
@Query("SELECT * from customer c JOIN customer_order co ON c.id = co.customer_id")
List<Customer> findCustomers()
My question is, does Spring Data JDBC fully support JOINs?