我正在使用 Spring Data JDBC (1.0.10.RELEASE) 实现一对多关系,即一个客户可以有多个订单。执行 JOIN 查询时,我可以在 DEBUG 中看到,在执行 JOIN 查询后,每个 Order 按其ID执行附加查询,以获取看起来完全多余的订单数据。
结果,在返回客户列表时,我得到x结果,其中x是订单数。所以我得到了x 个客户对象,这些对象似乎映射得很好(与订单的一对多关系也被正确映射),但是每个订单都会重复它们。
这是数据库架构:
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)
);
在 Customer 类中映射外键时,我使用:
@Column("customer_id")
private Set<OrderEntity> orders;
询问:
@Query("SELECT * from customer c JOIN customer_order co ON c.id = co.customer_id")
List<Customer> findCustomers()
我的问题是,Spring Data JDBC 是否完全支持 JOIN?