Я пытаюсь понять, почему, когда я нажимаю на контроллер во второй раз, My OnetoOne Mapping инициализируется с помощью lay.Ниже приведен мой код: Контроллер:
@RequestMapping(value="/updateOrderbyOrderid", method=RequestMethod.PUT,produces=MediaType.APPLICATION_JSON_VALUE)
public Order updateOrderbyOrderid (@RequestBody Order orderVO ) {
System.out.println(orderVO.getOrderId());
Order s1 = orderRepository.findByOrderId(orderVO.getOrderId());
if (orderVO.getCustomerId()!=null) {
orderVO.setCustomer(customerRepository.findByCustomerId(orderVO.getCustomerId()));
}
s1 = orderRepository.saveAndFlush(orderVO);
return s1;
}
Объект заказа:
@Entity
@Table(name="Ordertable", schema="cf_2583f365_c3c6_499a_a60d_138e7e7023eb")
public class Order {
@Id
@Column(name = "ORDER_ID")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int orderId;
@OneToOne(fetch=FetchType.LAZY,cascade=CascadeType.ALL)
@JoinColumn(name = "ORDER_CUSTOMER_ID", referencedColumnName = "CUSTOMER_ID")
private Customer customer;
private transient Long customerId;
public int getOrderId() {
return orderId;
}
public void setOrderId(int orderId) {
this.orderId = orderId;
}
public Customer getCustomer() {
return customer;
}
public void setCustomer(Customer customer) {
this.customer = customer;
}
public Long getCustomerId() {
return customerId;
}
public void setCustomerId(Long customerId) {
this.customerId = customerId;
}
}
Объект клиента:
@Entity
@Table(name="Customer", schema="cf_2583f365_c3c6_499a_a60d_138e7e7023eb")
public class Customer {
@Id
@Column(name = "CUSTOMER_ID")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long customerId;
@Column(name = "CUSTOMER_NAME")
private String customer_name;
@Column(name = "CUSTOMER_address_id")
private int customer_address_id;
public Long getCustomerId() {
return customerId;
}
public void setCustomerId(Long customerId) {
this.customerId = customerId;
}
public String getCustomer_name() {
return customer_name;
}
public void setCustomer_name(String customer_name) {
this.customer_name = customer_name;
}
public int getCustomer_address_id() {
return customer_address_id;
}
public void setCustomer_address_id(int customer_address_id) {
this.customer_address_id = customer_address_id;
}
public Customer() {
}
}
Структура Json для контроллера:
{
"orderId" :101,
"customerId" : 2
}
Таблица заказов для первого попадания:
Скриншот аннотированной сущности OnetoOne для первого попадания:
Таблица заказов для второго удара:
Когда я ударяюсь во второй раз, я получаю ленивый загруженный бин,Почему это происходит:
Одно важное замечание, если я прокомментирую ниже строку в контроллере:
Order s1 = orderRepository.findByOrderId(orderVO.getOrderId()); :
и заменим еес Order s1 = null, я больше не получаю ленивый инициализированный бин.Был ли спящий режим с использованием того же самого ленивого инициализированного bean-компонента внутри страны ??это с нулем:
@RequestMapping(value="/updateOrderbyOrderid", method=RequestMethod.PUT,produces=MediaType.APPLICATION_JSON_VALUE)
public Order updateOrderbyOrderid (@RequestBody Order orderVO ) {
System.out.println(orderVO.getOrderId());
Order s1 = null;
//Order s1 = orderRepository.findByOrderId(orderVO.getOrderId());
if (orderVO.getCustomerId()!=null) {
orderVO.setCustomer(customerRepository.findByCustomerId(orderVO.getCustomerId()));
}
s1 = orderRepository.saveAndFlush(orderVO);
return s1;
}