У меня есть два объекта: Продажа и продажаПродукция.Проблемы с двунаправленными отношениями в спящем режиме
Я пытаюсь сохранить объект Sale, но я не знаю, как сделать ему сервис, потому что всегда, что я пытаюсь сохранить Sale ir, требуется SaleProduct.
Это продажа объект:
@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Sale {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private long id;
@NotNull(message = "Sale product!")
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "SALE_ID")
private List<SaleProduct> products;
@NotNull(message = "Sale needs some value!")
private int saleValue;
private Date creationDate = new Date();
}
А вот SaleProduct сущность:
@Entity
@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder
public class SaleProduct {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private long id;
private int quantity;
@NotNull(message = "Insert the product, please")
@ManyToOne(fetch = FetchType.EAGER)
private Product product;
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private Sale sale;
}
Я пытаюсь упорствуем Продажа с этим методом:
public void insertSale(Sale sale) throws Exception {
Product product = manager.find(Product.class, 2L);
SaleProduct saleProduct = new SaleProduct();
saleProduct.setProduct(product);
sale.setProducts(Arrays.asList(saleProduct));
saleProduct.setSale(sale);
manager.persist(sale);
}
I я отправляю этот JSON:
{
"saleValue" : "200"
}
Когда я пытаюсь выбрать продажи я создал я получаю эти ошибки:
Caused by: com.fasterxml.jackson.databind.JsonMappingException: failed to lazily initialize a collection of role: com.tax.entity.Sale.products, could not initialize proxy - no Session (through reference chain: java.util.ArrayList[0]->com.tax.entity.Sale["products"])
at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:210)
at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:177)
at com.fasterxml.jackson.databind.ser.std.StdSerializer.wrapAndThrow(StdSerializer.java:190)
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:674)
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:156)
at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serializeContentsUsing(CollectionSerializer.java:160)
at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serializeContents(CollectionSerializer.java:102)
at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:94)
at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:24)
at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:251)
at com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:846)
at org.jboss.resteasy.plugins.providers.jackson.ResteasyJackson2Provider.writeTo(ResteasyJackson2Provider.java:207)
at org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.writeTo(AbstractWriterInterceptorContext.java:131)
at org.jboss.resteasy.core.interception.ServerWriterInterceptorContext.writeTo(ServerWriterInterceptorContext.java:60)
at org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.proceed(AbstractWriterInterceptorContext.java:120)
at org.jboss.resteasy.security.doseta.DigitalSigningInterceptor.aroundWriteTo(DigitalSigningInterceptor.java:145)
at org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.proceed(AbstractWriterInterceptorContext.java:124)
at org.jboss.resteasy.plugins.interceptors.encoding.GZIPEncodingInterceptor.aroundWriteTo(GZIPEncodingInterceptor.java:100)
at org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.proceed(AbstractWriterInterceptorContext.java:124)
at org.jboss.resteasy.core.ServerResponseWriter.writeNomapResponse(ServerResponseWriter.java:98)
at org.jboss.resteasy.core.SynchronousDispatcher.writeResponse(SynchronousDispatcher.java:466)
... 33 more
Caused by: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.tax.entity.Sale.products, could not initialize proxy - no Session
at org.hibernate.collection.internal.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:567)
at org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:205)
at org.hibernate.collection.internal.AbstractPersistentCollection.readSize(AbstractPersistentCollection.java:146)
at org.hibernate.collection.internal.PersistentBag.size(PersistentBag.java:261)
at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:88)
at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serialize(CollectionSerializer.java:24)
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:575)
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:666)
... 50 more
Еще одна проблема: когда я saleProduct.setSale(sale);
я получаю это исключение: com.sun.jdi.InvocationException место методу вызова
Можете ли вы показать нам сообщение об ошибке? –
@Paul конечно. Извините, что забыли. Завтра я вставлю здесь ошибку и улучшу вопрос. –
@PaulWasilewski Я добавил erros, который я получаю. –