I am new to Java/Hibernate and I have no idea what this error means.
ERROR: Connection leak detected: there are 1 unclosed connections upon shutting down pool jdbc:mysql://localhost:3306/hb_student_records?useSSL=false&serverTimezone=UTC
Exception in thread "main" org.hibernate.HibernateException: The internal connection pool has reached its maximum size and no connection is currently available!
I looked up answers on other forums from Stack Overflow but nothing made sense to me there.
My classes are here as follows:
Create Student Demo
package com.rsharma.hibernate.demo;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import com.rsharma.hibernate.demo.entity.Student;
public class CreateStudentDemo {
public static void main(String[] args) {
// create session factory
SessionFactory factory = new Configuration()
.configure("hibernate.cfg.xml")
.addAnnotatedClass(Student.class)
.buildSessionFactory();
// create session
Session session = factory.getCurrentSession();
try {
// create a student object
System.out.println("Creating new student object...");
Student tempStudent = new Student("Rishav", "Sharma", "paul@luv2code.com");
// start a transaction
session.beginTransaction();
// save the student object
System.out.println("Saving the student...");
session.save(tempStudent);
// commit transaction
session.getTransaction().commit();
System.out.println("Done!");
}
finally {
factory.close();
}
}
}
Student.java
package com.rsharma.hibernate.demo.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="student")
public class Student {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id")
private int id;
@Column(name="first_name")
private String firstName;
@Column(name="last_name")
private String lastName;
@Column(name="email")
private String email;
public Student(){
}
public Student(String firstName, String lastName, String email) {
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "Student [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", email=" + email + "]";
}
}
And my config.xml file
hibernate.cfg.xml
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- JDBC Database connection settings -->
<property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/hb_student_records?useSSL=false&serverTimezone=UTC</property>
<property name="connection.username">hbstudent</property>
<property name="connection.password">hbstudent</property>
<!-- JDBC connection pool settings ... using built-in test pool -->
<property name="connection.pool_size">1</property>
<!-- Select our SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Echo the SQL to stdout -->
<property name="show_sql">true</property>
<!-- Set the current session context -->
<property name="current_session_context_class">thread</property>
</session-factory>
</hibernate-configuration>
I don’t know what’s causing my open connection as I have closed my factory in the class and the session is temporary.
Ошибка Java / Hibernate: обнаружена утечка соединения. Внутренний пул соединений достиг максимального размера, и в настоящее время нет доступных соединений.
Я новичок в Java / Hibernate и понятия не имею, что означает эта ошибка.
Я искал ответы на других форумах от Stack Overflow, но там для меня ничего не имело смысла.
Мои классы здесь следующие:
Создать студенческую демонстрацию
Student.java
И мой файл config.xml
hibernate.cfg.xml
Я не знаю, что вызывает мое открытое соединение, поскольку я закрыл свою фабрику в классе, и сеанс является временным.
Я думаю, вам также следует очистить и закрыть объект сеанса перед закрытием объекта factory.
Используйте ниже в своем классе сущности @GeneratedValue (стратегия = GenerationType.IDENTITY)
Добро пожаловать в Stack Overflow! Хотя этот код может ответить на вопрос, предоставляя дополнительный контекст относительно как и / или Зачем, он решает проблему, что улучшит долгосрочную ценность ответа.
Быстрый способ решения этой проблемы — заменить последние пакеты Hibernate старыми файлами jar Hibernate 5.2.
На самом деле проблема не в пуле соединений, есть некоторое несоответствие типа объекта в блоке try и catch, вы можете удалить блок try и catch и посмотреть, что такое настоящее исключение.
Наверное, на это смогут ответить специалисты Hibernate.
И, конечно же, «очистка и закрытие объекта сеанса перед закрытием объекта фабрики» вам не поможет.
В классе учеников в строке № 14 вы объявили стратегию генерации идентификатора как:
Измените это на
Это устранит ошибку.
Посмотрите в Hibernate Docs, чтобы узнать, какой из них поддерживается вашей базой данных. Ниже представлены все 4 стратегии генерации идентификаторов:
Источник
Why is it sending me an unclosed connection error when everything should be clean?
I have a basic one to one mapping. When i try to extract information with the foreign key the first time i run the program i get an error message:ERROR: Connection leak detected: there are 1 unclosed connections upon shutting down pool jdbc:mysql://localhost:3306/novabaza?useSSL=false&serverTimezone=UTC Exception in thread «main» java.lang.NullPointerException at oto_otm_mtm.Blogic.main(Blogic.java:46). Second time i run the progam it always goes smoothly.
Tried to close the session then begin a new one because i thought that the problem is that I’m trying to retrieve data from a base that doesn’t exist. Nothing changed.
1 Answer 1
You are closing the session but you are not closing the established database connection. Hence the connection leak. Please close the database connection. This will resolve the issue.
A titbit is to in your above code, have all your statements within a single transaction.
Linked
Related
Hot Network Questions
Subscribe to RSS
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
Site design / logo © 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev 2023.1.12.43151
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.
Источник
Ошибка Java / Hibernate: обнаружена утечка соединения. Внутренний пул соединений достиг максимального размера, и в настоящее время нет доступных соединений.
Я новичок в Java / Hibernate и понятия не имею, что означает эта ошибка.
Я искал ответы на других форумах от Stack Overflow, но там для меня ничего не имело смысла.
Мои классы здесь следующие:
Создать студенческую демонстрацию
Student.java
И мой файл config.xml
hibernate.cfg.xml
Я не знаю, что вызывает мое открытое соединение, поскольку я закрыл свою фабрику в классе, и сеанс является временным.
Ответы:
Я думаю, вам также следует очистить и закрыть объект сеанса перед закрытием объекта factory.
Используйте ниже в своем классе сущности @GeneratedValue (стратегия = GenerationType.IDENTITY)
Быстрый способ решения этой проблемы — заменить последние пакеты Hibernate старыми файлами jar Hibernate 5.2.
На самом деле проблема не в пуле соединений, есть некоторое несоответствие типа объекта в блоке try и catch, вы можете удалить блок try и catch и посмотреть, что такое настоящее исключение.
Наверное, на это смогут ответить специалисты Hibernate.
И, конечно же, «очистка и закрытие объекта сеанса перед закрытием объекта фабрики» вам не поможет.
В классе учеников в строке № 14 вы объявили стратегию генерации идентификатора как:
Измените это на
Это устранит ошибку.
Посмотрите в Hibernate Docs, чтобы узнать, какой из них поддерживается вашей базой данных. Ниже представлены все 4 стратегии генерации идентификаторов:
Источник
Ошибка Java / Hibernate: обнаружена утечка соединения. Внутренний пул соединений достиг своего максимального размера, и в настоящее время нет доступных соединений
Я новичок в Java / Hibernate, и я понятия не имею, что означает эта ошибка.
Я искал ответы на других форумах от Stack Overflow, но там для меня ничего не имело смысла.
Мои занятия здесь следующие:
Создать демо-версию для студентов
Student.java
И мой файл config.xml
Я не знаю, что вызывает мое открытое соединение, так как я закрыл свою фабрику в классе, и сеанс является временным.
6 ответов
Я думаю, что вы должны также очистить и закрыть объект сеанса перед закрытием объекта фабрики.
Послушай, у меня есть твои сомнения, см. Убери строку @GenerationType(Strategy=GeneratedValue.Identity) потому что я предполагаю, что вы используете автоинкремент в столбце первичного ключа. @GenerationType(Strategy=GeneratedValue.Identity) следует использовать только тогда, когда вы хотите сохранить в базе данных более одного объекта.
У меня это не сработало 🙁
Используйте ниже в вашем классе сущности @GeneratedValue (стратегии = GenerationType.IDENTITY)
Быстрое решение этой проблемы — заменить последние пакеты Hibernate старыми jar-файлами Hibernate 5.2.
На самом деле проблема не в пуле соединений, есть некоторое несоответствие типов объектов в блоке try и catch, вы можете удалить блок try и catch и посмотреть, что является настоящим исключением.
Вероятно, эксперты Hibernate могут ответить на этот вопрос.
И, конечно, «очистка и закрытие объекта сеанса перед закрытием фабричного объекта» вам не поможет.
Источник
How to avoid java.util.ConcurrentModificationException
I’m using Hibernate in this application. I’m trying call data from database to jTable. When database is empty codes are compiling but when i add data to mysql table program throw java.util.ConcurrentModificationException.
My data access codes. Maybe the problem is here
Somebody can help me? Stack trace:
4 Answers 4
You are replacing the value of books with another list then the loop tries to append the new list books into itself — hence ConcurrentModificationException.
Assuming that getResultList() returns a List all you need to do is append results directly to books without re-assignment:
Try using a CopyOnWriteArrayList instead of an ArrayList . This will allow for concurrent modification. But be warned, if you are changing the list a lot, this is not very efficient. If you are mostly reading, however, it should be fine.
ConcurrentModificationException is being thrown because you are adding elements to the same list you are iterating. Here:
This code is wrong.
You can either return the List instance returned by Hibernate, or create a new list.
You don’t need to use a CopyOnWriteArrayList ! It is a very expensive datastructure. Your error has nothing to do with different threads modifiying and accessing the list at the same time. Besides, you don’t need to start an explicit transaction against the database, because you are only reading. The whole select method could perfectly be simplified to:
You don’t need to close the factory , either.
Источник
Я новичок в Java / Hibernate и понятия не имею, что означает эта ошибка.
ERROR: Connection leak detected: there are 1 unclosed connections upon shutting down pool jdbc:mysql://localhost:3306/hb_student_records?useSSL=false&serverTimezone=UTC
Exception in thread "main" org.hibernate.HibernateException: The internal connection pool has reached its maximum size and no connection is currently available!
Я искал ответы на других форумах от Stack Overflow, но там для меня ничего не имело смысла.
Мои классы здесь следующие:
Создать студенческую демонстрацию
package com.rsharma.hibernate.demo;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import com.rsharma.hibernate.demo.entity.Student;
public class CreateStudentDemo {
public static void main(String[] args) {
// create session factory
SessionFactory factory = new Configuration()
.configure("hibernate.cfg.xml")
.addAnnotatedClass(Student.class)
.buildSessionFactory();
// create session
Session session = factory.getCurrentSession();
try {
// create a student object
System.out.println("Creating new student object...");
Student tempStudent = new Student("Rishav", "Sharma", "paul@luv2code.com");
// start a transaction
session.beginTransaction();
// save the student object
System.out.println("Saving the student...");
session.save(tempStudent);
// commit transaction
session.getTransaction().commit();
System.out.println("Done!");
}
finally {
factory.close();
}
}
}
Student.java
package com.rsharma.hibernate.demo.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "student")
public class Student {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name = "id")
private int id;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name = "email")
private String email;
public Student(){
}
public Student(String firstName, String lastName, String email) {
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "Student [id = " + id + ", firstName = " + firstName + ", lastName = " + lastName + ", email = " + email + "]";
}
}
И мой файл config.xml
Hibernate.cfg.xml
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- JDBC Database connection settings -->
<property name = "connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name = "connection.url">jdbc:mysql://localhost:3306/hb_student_records?useSSL=false&serverTimezone=UTC</property>
<property name = "connection.username">hbstudent</property>
<property name = "connection.password">hbstudent</property>
<!-- JDBC connection pool settings ... using built-in test pool -->
<property name = "connection.pool_size">1</property>
<!-- Select our SQL dialect -->
<property name = "dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Echo the SQL to stdout -->
<property name = "show_sql">true</property>
<!-- Set the current session context -->
<property name = "current_session_context_class">thread</property>
</session-factory>
</hibernate-configuration>
Я не знаю, что вызывает мое открытое соединение, поскольку я закрыл свою фабрику в классе, и сеанс является временным.
Computer, 21 августа 2018 г., 03:39
3
7 510
7
Ответы:
Решено
Я думаю, вам также следует очистить и закрыть объект сеанса перед закрытием объекта factory.
Another, 21 августа 2018 г., 13:02
Используйте ниже в своем классе сущности
@GeneratedValue (стратегия = GenerationType.IDENTITY)
Pragyandipta, 10 июня 2019 г., 10:43
Быстрый способ решения этой проблемы — заменить последние пакеты Hibernate старыми файлами jar Hibernate 5.2.
На самом деле проблема не в пуле соединений, есть некоторое несоответствие типа объекта в блоке try и catch, вы можете удалить блок try и catch и посмотреть, что такое настоящее исключение.
Наверное, на это смогут ответить специалисты Hibernate.
И, конечно же, «очистка и закрытие объекта сеанса перед закрытием объекта фабрики» вам не поможет.
user3148161, 26 июня 2019 г., 14:01
В классе учеников в строке № 14 вы объявили стратегию генерации идентификатора как:
@GeneratedValue(strategy=GenerationType.AUTO)
Измените это на
@GeneratedValue(strategy = GenerationType.IDENTITY)
Это устранит ошибку.
Посмотрите в Hibernate Docs, чтобы узнать, какой из них поддерживается вашей базой данных.
Ниже представлены все 4 стратегии генерации идентификаторов:
GenerationType.AUTO: выберите подходящую стратегию для конкретной базы данных.GenerationType.IDENTITY: назначьте первичный ключ, используя столбец идентификаторов базы данных.GenerationType.SEQUENCE: назначьте первичные ключи, используя последовательность базы данных.GenerationType.TABLE: назначьте первичные ключи, используя базовую таблицу базы данных, чтобы гарантировать уникальность.
Nike, 21 сентября 2019 г., 18:47
Послушайте, у меня есть ваши сомнения, посмотрите, удалите строку @GenerationType(Strategy=GeneratedValue.Identity),
потому что я предполагаю, что вы используете автоматическое увеличение в столбце первичного ключа.
@GenerationType(Strategy=GeneratedValue.Identity) следует использовать только тогда, когда вы хотите сохранить более одного объекта в своей базе данных.
SPIDER, 12 ноября 2019 г., 06:23
Ты должен изменить
@GeneratedValue(strategy = GenerationType.AUTO)
К
@GeneratedValue(strategy = GenerationType.IDENTITY)
Тогда это будет работать.
Shaiq_Huseynzade, 22 декабря 2019 г., 22:04
Для меня это решило создание нового EntityManager для каждой транзакции и закрытие его после каждой транзакции.
} finally {
session.close();
entityManager.close();
}
B0773N, 26 марта 2021 г., 10:55
Интересные вопросы для изучения
Имею две энтити: Train и Seat. У них есть реляция one-to-many:
UML
Train.java:
@Entity
@Table(name = "train")
public class Train {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "name")
private String name;
// Проблема с реляцией!!!
@OneToMany(mappedBy = "train", cascade = CascadeType.ALL)
private Set<Seat> seats;
@OneToOne
private State state;
@Column(name = "carriages")
private Integer carriages;
// Getters & Setters...
}
Seat.java:
@Entity
@Table(name = "seat")
public class Seat {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "carriage")
private Integer carriage;
@Column(name = "seat")
private Integer seat;
// Реляция с поездом
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "train_id", nullable = false)
private Train train;
// Getters & Setters...
}
Как можно заметить, связка тут bi-directional:
@OneToMany(mappedBy = "train", cascade = CascadeType.ALL)
private Set<Seat> seats;
И
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "train_id", nullable = false)
private Train train;
Собственно говоря, у меня произошла ошибка в бизнес-логике на уровне сервиса, когда я вытаскиваю из расписания JPA Train. Причём, проблемы начинаются лишь тогда, когда я вытаскиваю из поезда список сидений (Seat). В моём Spring MVC приложении вылетает такая ошибка:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.slandshow.models.Train.seats, could not initialize proxy - no Session
Затем, когда я понял первоисточник проблемы, решил дебажить в мейне эти два энтити.
С помощью SessionFactory я решил вытащить из БД поезд под конкретным айдишником записи и посмотреть:
session.beginTransaction();
Train train = session.get(Train.class, 5l); // Вытаскиваю поезд из базы
System.out.println(train); // Причина ошибки вылезает в переопределённом методе toString
session.getTransaction().commit();
Так как у меня toString переопределён, то я хватаю вот такой стек-трейс:
ERROR 2018-09-21 19:42:44,671 [main] org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl - Connection leak detected: there are 1 unclosed connections upon shutting down pool jdbc:mysql://localhost:3306/RattlerStation
Exception in thread "main" java.lang.StackOverflowError
at java.lang.Long.toString(Long.java:396)
at java.lang.Long.toString(Long.java:1032)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
Когда я просто вывожу другие поля Train’а — то всё ок, проблему Connection leak detected: there are 1 unclosed connections upon shutting down pool jdbc:mysql://localhost:3306/RattlerStation вызывает именно train.getSeats();
Вот мой Hibernate конфи, просто вдруг дело в нём
@Configuration
@EnableTransactionManagement
@ComponentScan({"com.slandshow"})
@PropertySource(value = {"classpath:application.properties"})
public class HibernateConfig {
private static final String MODEL_PACKAGE = "com.slandshow.models";
private static final String JDBC_DRIVER_CLASS_NAME_PROPERTY = "jdbc.driverClassName";
private static final String JDBC_URL_PROPERTY = "jdbc.url";
private static final String HIBERNATE_DIALECT_PROPERTY = "hibernate.dialect";
private static final String HIBERNATE_SHOW_SQL_PROPERTY = "hibernate.show_sql";
private static final String HIBERNATE_FORMAT_SQL_PROPERTY = "hibernate.format_sql";
@Autowired
private Environment environment;
@Bean
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
sessionFactory.setPackagesToScan(MODEL_PACKAGE);
sessionFactory.setHibernateProperties(hibernateProperties());
Properties property = new Properties();
property.put("hibernate.id.new_generator_mappings", "false");
sessionFactory.setHibernateProperties(property);
return sessionFactory;
}
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(environment.getRequiredProperty(JDBC_DRIVER_CLASS_NAME_PROPERTY));
dataSource.setUrl(environment.getRequiredProperty(JDBC_URL_PROPERTY));
dataSource.setUsername("root");
dataSource.setPassword("12345");
return dataSource;
}
private Properties hibernateProperties() {
Properties properties = new Properties();
properties.put(HIBERNATE_DIALECT_PROPERTY, environment.getRequiredProperty(HIBERNATE_DIALECT_PROPERTY));
properties.put(HIBERNATE_SHOW_SQL_PROPERTY, environment.getRequiredProperty(HIBERNATE_SHOW_SQL_PROPERTY));
properties.put(HIBERNATE_FORMAT_SQL_PROPERTY, environment.getRequiredProperty(HIBERNATE_FORMAT_SQL_PROPERTY));
return properties;
}
@Bean
@Autowired
public HibernateTransactionManager transactionManager(SessionFactory s) {
HibernateTransactionManager txManager = new HibernateTransactionManager();
txManager.setSessionFactory(s);
return txManager;
}
}
Что же я сделал не так?
I have two enthys: Train and Seat♪ They have one-to-many relay:
UML

Train.java:
@Entity @Table(name = "train") public class Train {@Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private Long id; @Column(name = "name") private String name; // Проблема с реляцией!!! @OneToMany(mappedBy = "train", cascade = CascadeType.ALL) private Set<Seat> seats; @OneToOne private State state; @Column(name = "carriages") private Integer carriages; // Getters & Setters...}
Seat.java:
@Entity
@Table(name = "seat")
public class Seat {@Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private Long id; @Column(name = "carriage") private Integer carriage; @Column(name = "seat") private Integer seat; // Реляция с поездом @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER) @JoinColumn(name = "train_id", nullable = false) private Train train; // Getters & Setters...}
As you can see, the connection is here. bi-directional:
@OneToMany(mappedBy = "train", cascade = CascadeType.ALL)
private Set<Seat> seats;
And
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "train_id", nullable = false)
private Train train;
As a matter of fact, I had a mistake in the business logic at the service level when I pulled out of JPA Train. Besides, the problem starts only when I pull the seat list from the train. In my Spring MVC, the annex is making such a mistake:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.slandshow.models.Train.seats, could not initialize proxy - no Session
Then, when I realized the problem’s original source, I decided to dump these two enthys in the mein.
With help SessionFactory I’ve decided to get out of the OBD train under a specific I.D. and watch:
session.beginTransaction();Train train = session.get(Train.class, 5l); // Вытаскиваю поезд из базы
System.out.println(train); // Причина ошибки вылезает в переопределённом методе toStringsession.getTransaction().commit();
Because I have toString I’m redesigning, so I’m grabbing this kind of thing:
ERROR 2018-09-21 19:42:44,671 [main] org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl - Connection leak detected: there are 1 unclosed connections upon shutting down pool jdbc:mysql://localhost:3306/RattlerStation
Exception in thread "main" java.lang.StackOverflowError
at java.lang.Long.toString(Long.java:396)
at java.lang.Long.toString(Long.java:1032)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.AbstractCollection.toString(AbstractCollection.java:462)
at org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:303)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Train.toString(Train.java:74)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.slandshow.models.Seat.toString(Seat.java:72)
at java.lang.String.valueOf(String.java:2994)
When I’m just taking out the other fields of Train’a, all right, problem.
Connection leak detected: there are 1 unclosed connections upon shutting down pool jdbc:mysql://localhost:3306/RattlerStationExactly.train.getSeats();Here’s my Hibernate Confi, just suddenly it’s about him.
@Configuration
@EnableTransactionManagement
@ComponentScan({"com.slandshow"})
@PropertySource(value = {"classpath:application.properties"})
public class HibernateConfig {
private static final String MODEL_PACKAGE = "com.slandshow.models";
private static final String JDBC_DRIVER_CLASS_NAME_PROPERTY = "jdbc.driverClassName";
private static final String JDBC_URL_PROPERTY = "jdbc.url";
private static final String HIBERNATE_DIALECT_PROPERTY = "hibernate.dialect";
private static final String HIBERNATE_SHOW_SQL_PROPERTY = "hibernate.show_sql";
private static final String HIBERNATE_FORMAT_SQL_PROPERTY = "hibernate.format_sql";@Autowired private Environment environment; @Bean public LocalSessionFactoryBean sessionFactory() { LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); sessionFactory.setDataSource(dataSource()); sessionFactory.setPackagesToScan(MODEL_PACKAGE); sessionFactory.setHibernateProperties(hibernateProperties()); Properties property = new Properties(); property.put("hibernate.id.new_generator_mappings", "false"); sessionFactory.setHibernateProperties(property); return sessionFactory; } @Bean public DataSource dataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName(environment.getRequiredProperty(JDBC_DRIVER_CLASS_NAME_PROPERTY)); dataSource.setUrl(environment.getRequiredProperty(JDBC_URL_PROPERTY)); dataSource.setUsername("root"); dataSource.setPassword("12345"); return dataSource; } private Properties hibernateProperties() { Properties properties = new Properties(); properties.put(HIBERNATE_DIALECT_PROPERTY, environment.getRequiredProperty(HIBERNATE_DIALECT_PROPERTY)); properties.put(HIBERNATE_SHOW_SQL_PROPERTY, environment.getRequiredProperty(HIBERNATE_SHOW_SQL_PROPERTY)); properties.put(HIBERNATE_FORMAT_SQL_PROPERTY, environment.getRequiredProperty(HIBERNATE_FORMAT_SQL_PROPERTY)); return properties; } @Bean @Autowired public HibernateTransactionManager transactionManager(SessionFactory s) { HibernateTransactionManager txManager = new HibernateTransactionManager(); txManager.setSessionFactory(s); return txManager; } }What did I do wrong?









