Spring 嵌套@OneToOne->@OneToMany未填充@OneToMany子对象

Spring 嵌套@OneToOne->@OneToMany未填充@OneToMany子对象,spring,hibernate,spring-data,one-to-many,one-to-one,Spring,Hibernate,Spring Data,One To Many,One To One,问题摘要: @Entity public class CustomerOrder { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @OneToOne(fetch = FetchType.EAGER) @JoinColumn( name="id",referencedColumnName="customerOrderId",insertable=false, updatable=fal

问题摘要:

@Entity
public class CustomerOrder {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(
        name="id",referencedColumnName="customerOrderId",insertable=false, updatable=false)
private Reservation reservation;

}
@Entity
public class ProductOrder {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;

private Long customerOrderId;

private Long reservationId;

}
我有三个@实体,其关系如下: 客户订单->@OneToOne->预订->@OneToMany->产品订单

当我调用控制器直接获取CustomerOrder时,CustomerOrder和Reservation子对象被拉入。
列表保持为空

如果我调用控制器直接获取预订,那么预订下的
列表将被完全填充

当我打印出Hibernate为获取
List
而生成的SQL时,该SQL实际上提取了相应的ProductOrder列表,但spring没有填充该列表

详细信息:

@Entity
public class CustomerOrder {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(
        name="id",referencedColumnName="customerOrderId",insertable=false, updatable=false)
private Reservation reservation;

}
@Entity
public class ProductOrder {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;

private Long customerOrderId;

private Long reservationId;

}
我有三个类(为了简洁起见省略了getter和setter):

客户订单:

@Entity
public class CustomerOrder {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(
        name="id",referencedColumnName="customerOrderId",insertable=false, updatable=false)
private Reservation reservation;

}
@Entity
public class ProductOrder {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;

private Long customerOrderId;

private Long reservationId;

}
预订

@Entity
public class Reservation {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

//Tie a reservation back to a customer order
private Long customerOrderId;

@OneToMany
@JoinColumn(name = "reservationId", 
    referencedColumnName="id", insertable=false, updatable=false)
private List<ProductOrder> productOrderList = new ArrayList<ProductOrder>();
我还有两个端点。一个可以直接获取预订,或者一个可以通过customerOrder获取预订:

@RequestMapping(value = "/customer-order/{id}", method = RequestMethod.GET)
public @ResponseBody CustomerOrder findOne(@PathVariable(value="id") Long id) {     

    return CustomerOrder customerOrder = customerOrderRepository.findOne(id);

}

@RequestMapping(value = "/reservation/{id}", method = RequestMethod.GET)
public @ResponseBody Reservation findOne(@PathVariable(value="id") Long id) {       

    return reservationService.findOne(id);

}

我正在使用spring boot版本1.3.5.RELEASE和MySQL 5.6.23

我弄清楚了发生了什么

最初我预订了与CustomerOrder有@OneToMany关系的房间。这意味着我的映射应该这样使用:

@OneToMany
@JoinColumn(
        name="customerOrderId",referencedColumnName="id",insertable=false, updatable=false)
private List<Reservation> reservation;
private Long reservationId;

@OneToOne
@JoinColumn(
        name="reservationId",referencedColumnName="id",insertable=false, updatable=false)
private Reservation reservation;
呜呜声