Spring Boot не может лениво инициализировать коллекцию ролей и не может инициализировать проксиJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Spring Boot не может лениво инициализировать коллекцию ролей и не может инициализировать прокси

Сообщение Anonymous »

Я делаю сайт, на котором заказываю ингредиенты. Я выбираю ингредиент и ввожу его количество, нажимаю кнопку «Добавить» и повторяю процесс несколько раз. После этого я перехожу на следующую страницу, где выбираю поставщика и нажимаю "Заказать".
Набавка (поставка) должна быть добавлена ​​в базу данных и должна открыться страница успеха, но я получаю исключение, сообщающее мне, что вместо этого я не могу инициализировать ее лениво.
NabavkaController.java:

Код: Выделить всё

@Autowired
NamirnicaRepository namr;
@Autowired
NabavkaRepository nabr;
@Autowired
DobavljacRepository dr;
@Autowired
NabavkaKorpaRepository nkr;

// ...

@SuppressWarnings("unchecked")
@PostMapping(value = "sacuvajNabavku")
public String sacuvajNabavku(Dobavljac dobavljac, HttpServletRequest request) {
List izabrane = (ArrayList) request.getSession()  .getAttribute("izabrane");
List brojevi = (ArrayList) request.getSession()       .getAttribute("brojevi");
Nabavka n = new Nabavka();

for (int i = 0; i < izabrane.size(); i++) {
System.out.println(izabrane.get(i).getNaziv());

NabavkaKorpaPK nkPK = new NabavkaKorpaPK();
nkPK.setIdNabavka(n.getIdNabavka());
nkPK.setIdNamirnica(izabrane.get(i).getIdNamirnica());

NabavkaKorpa nk = new NabavkaKorpa();
nk.setId(nkPK);
nk.setKolicina(brojevi.get(i));
nk.setUkupnaCena(izabrane.get(i).getCenaNamirnice() * rojevi.get(0));
izabrane.get(i).addNabavkaKorpa(nk);

n.addNabavkaKorpa(nk);
nabr.updateNamirnica(izabrane.get(i));
}

n.setDatumNabavke(new Date());
n.setUkupnaCena(n.getNabavkaKorpas().stream().map(k -> k.getUkupnaCena()).reduce(0.0, (a, b) -> a + b));
n.setDobavljac(dobavljac);
dobavljac.addNabavka(n);

nabr.save(n);
return "uspehNabavka";
}
Nabavka.java:

Код: Выделить всё

@Entity
@NamedQuery(name="Nabavka.findAll", query="SELECT n FROM Nabavka n")
public class Nabavka implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int idNabavka;

@Temporal(TemporalType.TIMESTAMP)
private Date datumNabavke;

private double ukupnaCena;

//bi-directional many-to-one association to Dobavljac
@ManyToOne
@JoinColumn(name="idDobavljac")
private Dobavljac dobavljac;

//bi-directional many-to-one association to Menadzer
@ManyToOne
@JoinColumns({
@JoinColumn(name="idMenadzer", referencedColumnName="idMenadzer"),
@JoinColumn(name="idRadnik", referencedColumnName="idRadnik")
})
private Menadzer menadzer;

//bi-directional many-to-one association to User
@ManyToOne
@JoinColumn(name="idUser")
private User user;

//bi-directional many-to-one association to NabavkaKorpa
@OneToMany(mappedBy="nabavka", cascade={CascadeType.ALL})
private List nabavkaKorpas = new ArrayList();

public int getIdNabavka() {
return this.idNabavka;
}

public void setIdNabavka(int idNabavka) {
this.idNabavka = idNabavka;
}

public Date getDatumNabavke() {
return this.datumNabavke;
}

public void setDatumNabavke(Date datumNabavke) {
this.datumNabavke = datumNabavke;
}

public double getUkupnaCena() {
return this.ukupnaCena;
}

public void setUkupnaCena(double ukupnaCena) {
this.ukupnaCena = ukupnaCena;
}

public Dobavljac getDobavljac() {
return this.dobavljac;
}

public void setDobavljac(Dobavljac dobavljac) {
this.dobavljac = dobavljac;
}

public Menadzer getMenadzer() {
return this.menadzer;
}

public void setMenadzer(Menadzer menadzer) {
this.menadzer = menadzer;
}

public User getUser() {
return this.user;
}

public void setUser(User user) {
this.user = user;
}

public List getNabavkaKorpas() {
return this.nabavkaKorpas;
}

public void setNabavkaKorpas(List  nabavkaKorpas) {
this.nabavkaKorpas = nabavkaKorpas;
}

public NabavkaKorpa addNabavkaKorpa(NabavkaKorpa nabavkaKorpa) {
getNabavkaKorpas().add(nabavkaKorpa);
nabavkaKorpa.setNabavka(this);

return nabavkaKorpa;
}

public NabavkaKorpa removeNabavkaKorpa(NabavkaKorpa nabavkaKorpa) {
getNabavkaKorpas().remove(nabavkaKorpa);
nabavkaKorpa.setNabavka(null);

return nabavkaKorpa;
}

}
Намирница.java:

Код: Выделить всё

@Entity
@NamedQuery(name="Namirnica.findAll", query="SELECT n FROM Namirnica n")
public class Namirnica implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int idNamirnica;

private double cenaNamirnice;

private String kolicina;

private String naziv;

private int stanje;

//bi-directional many-to-one association to NabavkaKorpa
@OneToMany(mappedBy="namirnica")
private List nabavkaKorpas = new ArrayList();

public Namirnica() {
}

public int getIdNamirnica() {
return this.idNamirnica;
}

public void setIdNamirnica(int idNamirnica) {
this.idNamirnica = idNamirnica;
}

public double getCenaNamirnice() {
return this.cenaNamirnice;
}

public void setCenaNamirnice(double cenaNamirnice) {
this.cenaNamirnice = cenaNamirnice;
}

public String getKolicina() {
return this.kolicina;
}

public void setKolicina(String kolicina) {
this.kolicina = kolicina;
}

public String getNaziv() {
return this.naziv;
}

public void setNaziv(String naziv) {
this.naziv = naziv;
}

public int getStanje() {
return this.stanje;
}

public void setStanje(int stanje) {
this.stanje = stanje;
}

public List getNabavkaKorpas() {
return this.nabavkaKorpas;
}

public void setNabavkaKorpas(List  nabavkaKorpas) {
this.nabavkaKorpas = nabavkaKorpas;
}

public NabavkaKorpa addNabavkaKorpa(NabavkaKorpa nabavkaKorpa) {
getNabavkaKorpas().add(nabavkaKorpa);
nabavkaKorpa.setNamirnica(this);

return nabavkaKorpa;
}

public NabavkaKorpa removeNabavkaKorpa(NabavkaKorpa nabavkaKorpa) {
getNabavkaKorpas().remove(nabavkaKorpa);
nabavkaKorpa.setNamirnica(null);

return nabavkaKorpa;
}

}
НабавкаКорпа.java:

Код: Выделить всё

@Entity
@NamedQuery(name="NabavkaKorpa.findAll", query="SELECT n FROM NabavkaKorpa n")
public class NabavkaKorpa implements Serializable {
private static final long serialVersionUID = 1L;

@EmbeddedId
private NabavkaKorpaPK id;

private int kolicina;

private double ukupnaCena;

//bi-directional many-to-one association to Nabavka
@ManyToOne(cascade={CascadeType.ALL})
@JoinColumn(name="idNabavka", insertable = false, updatable = false)
private Nabavka nabavka;

//bi-directional many-to-one association to Namirnica
@ManyToOne(cascade={CascadeType.ALL})
@JoinColumn(name="idNamirnica", insertable = false, updatable = false)
private Namirnica namirnica;

public NabavkaKorpa() {
}

public NabavkaKorpaPK getId() {
return this.id;
}

public void setId(NabavkaKorpaPK id) {
this.id = id;
}

public int getKolicina() {
return this.kolicina;
}

public void setKolicina(int kolicina) {
this.kolicina = kolicina;
}

public double getUkupnaCena() {
return this.ukupnaCena;
}

public void setUkupnaCena(double ukupnaCena) {
this.ukupnaCena = ukupnaCena;
}

public Nabavka getNabavka() {
return this.nabavka;
}

public void setNabavka(Nabavka nabavka) {
this.nabavka = nabavka;
}

public Namirnica getNamirnica() {
return this.namirnica;
}

public void setNamirnica(Namirnica namirnica) {
this.namirnica = namirnica;
}

}
НабавкаКорпаПК.java:

Код: Выделить всё

@Embeddable
public class NabavkaKorpaPK implements Serializable {
//default serial version id, required for serializable classes.
private static final long serialVersionUID = 1L;

@Column(insertable=false, updatable=false)
private int idNamirnica;

@Column(insertable=false, updatable=false)
private int idNabavka;

public NabavkaKorpaPK() {
}
public int getIdNamirnica() {
return this.idNamirnica;
}
public void setIdNamirnica(int idNamirnica) {
this.idNamirnica = idNamirnica;
}
public int getIdNabavka() {
return this.idNabavka;
}
public void setIdNabavka(int idNabavka) {
this.idNabavka = idNabavka;
}

public boolean equals(Object other) {
if (this == other) {
return true;
}
if (!(other instanceof NabavkaKorpaPK)) {
return false;
}
NabavkaKorpaPK castOther = (NabavkaKorpaPK)other;
return
(this.idNamirnica == castOther.idNamirnica)
&& (this.idNabavka == castOther.idNabavka);
}

public int hashCode() {
final int prime = 31;
int hash = 17;
hash = hash * prime + this.idNamirnica;
hash = hash * prime + this.idNabavka;

return hash;
}
}
НабавкаКорпаРепозиторий.java:

Код: Выделить всё

public interface NabavkaKorpaRepository extends JpaRepository  {

}
NabavkaRepository.java:

Код: Выделить всё

public interface NabavkaRepository extends JpaRepository, NabavkaRepoSpecific {

}
NabavkaRepoSpeicific.java

Код: Выделить всё

public interface NabavkaRepoSpecific {

public void updateNamirnica(Namirnica namirnica);

}
NabavkaRepoSpecificImpl.java:

Код: Выделить всё

@Repository
@Transactional
public class NabavkaRepoSpecificImpl implements NabavkaRepoSpecific {

@PersistenceContext
EntityManager em;

@Override
public void updateNamirnica(Namirnica namirnica) {
try {
em.merge(namirnica);
} catch (Exception e) {
e.printStackTrace();
}
}

}
NamirnicaRepository.java:

Код: Выделить всё

public interface NamirnicaRepository extends JpaRepository  {

}
Исключение:

Код: Выделить всё

org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role:  model.Namirnica.nabavkaKorpas,  could not initialize proxy - no Session
at org.hibernate.collection.internal.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:614) ~[hibernate-core-5.6.9.Final.jar:5.6.9.Final]
at org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:218) ~[hibernate-core-5.6.9.Final.jar:5.6.9.Final]
at org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:591) ~[hibernate-core-5.6.9.Final.jar:5.6.9.Final]
at org.hibernate.collection.internal.AbstractPersistentCollection.write(AbstractPersistentCollection.java:415) ~[hibernate-core-5.6.9.Final.jar:5.6.9.Final]
at org.hibernate.collection.internal.PersistentBag.add(PersistentBag.java:407) ~[hibernate-core-5.6.9.Final.jar:5.6.9.Final]
at model.Namirnica.addNabavkaKorpa(Namirnica.java:85) ~[classes/:na]
at com.example.demo.controller.NabavkaController.sacuvajNabavku(NabavkaController.java:95) ~[classes/:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.21.jar:5.3.21]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.21.jar:5.3.21]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.21.jar:5.3.21]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.21.jar:5.3.21]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.21.jar:5.3.21]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.21.jar:5.3.21]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067) ~[spring-webmvc-5.3.21.jar:5.3.21]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963) ~[spring-webmvc-5.3.21.jar:5.3.21]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.21.jar:5.3.21]
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.21.jar:5.3.21]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:681) ~[tomcat-embed-core-9.0.64.jar:4.0.FR]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.21.jar:5.3.21]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) ~[tomcat-embed-core-9.0.64.jar:4.0.FR]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.64.jar:9.0.64]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.64.jar:9.0.64]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.64.jar:9.0.64]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.64.jar:9.0.64]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.64.jar:9.0.64]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.21.jar:5.3.21]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.21.jar:5.3.21]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.64.jar:9.0.64]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.64.jar:9.0.64]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.21.jar:5.3.21]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)  ~[spring-web-5.3.21.jar:5.3.21]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.64.jar:9.0.64]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.64.jar:9.0.64]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.21.jar:5.3.21]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.21.jar:5.3.21]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.64.jar:9.0.64]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.64.jar:9.0.64]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[tomcat-embed-core-9.0.64.jar:9.0.64]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.64.jar:9.0.64]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.64.jar:9.0.64]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[tomcat-embed-core-9.0.64.jar:9.0.64]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.64.jar:9.0.64]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.64.jar:9.0.64]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) ~[tomcat-embed-core-9.0.64.jar:9.0.64]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) ~[tomcat-embed-core-9.0.64.jar:9.0.64]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.64.jar:9.0.64]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890) ~[tomcat-embed-core-9.0.64.jar:9.0.64]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1787) ~[tomcat-embed-core-9.0.64.jar:9.0.64]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.64.jar:9.0.64]
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.64.jar:9.0.64]
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.64.jar:9.0.64]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.64.jar:9.0.64]
at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]
РЕДАКТИРОВАТЬ: Я получаю Намирникаса во время сеанса. Вот ссылка на GitHub.

Подробнее здесь: https://stackoverflow.com/questions/728 ... ld-not-ini
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»