Hibernate выполняет неограниченное количество запросов по findAll () - PullRequest
0 голосов
/ 27 апреля 2020

Я попытался установить двунаправленное отношение @OneToMany (одна авиакомпания имеет много приложений) при запуске airlineRepository.findAll() вместо одного выбора всех запросов в режиме гибернации делает это навсегда и вылетает приложение:

Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?
Hibernate: select submitteda0_.user_id as user_id3_1_0_, submitteda0_.id as id1_1_0_, submitteda0_.id as id1_1_1_, submitteda0_.airline_id as airline_2_1_1_, submitteda0_.user_id as user_id3_1_1_, airline1_.id as id1_0_2_, airline1_.description as descript2_0_2_, airline1_.title as title3_0_2_ from applications submitteda0_ left outer join airlines airline1_ on submitteda0_.airline_id=airline1_.id where submitteda0_.user_id=?

До Я сталкиваюсь с этим:

2020-04-27 19:11:53.376 ERROR 4344 --- [0.4-8080-exec-5] o.s.t.i.TransactionInterceptor           : Application exception overridden by rollback exception

java.lang.StackOverflowError: null
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:369) ~[postgresql-42.2.11.jar:42.2.11]
    at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:159) ~[postgresql-42.2.11.jar:42.2.11]
    at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:109) ~[postgresql-42.2.11.jar:42.2.11]
    at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52) ~[HikariCP-3.4.2.jar:na]

Как я могу это исправить?

Авиакомпания. java

@ToString
@EqualsAndHashCode
@Builder
@Getter
@Setter
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "airlines")
public class Airline {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "title")
    private String title;

    @Column(name = "description")
    private String description;

    @OneToMany(mappedBy = "airline",  cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    private Set<Application> applications = new HashSet<>(); //Applied user applications, also includes exams
}

Приложение. java

@Data
@Entity
@Table(name = "applications")
public class Application {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @ManyToOne
    @JoinColumn(name = "user_id")
    private User user; //User submitted applied

    @ManyToOne
    @JoinColumn(name = "airline_id")
    private Airline airline; //Airline applied to

    public Application() {
    }
}

Отношение в пользователе. java

@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    private Set<Application> submittedApplications = new HashSet<>();

1 Ответ

0 голосов
/ 27 апреля 2020

Это не из-за Hibernate, а из-за ваших аннотаций Lombok:

@ToString
@EqualsAndHashCode

При использовании этих аннотаций вы должны быть осторожны, чтобы не получить бесконечные циклы. Например, если вы вызываете toString () для entity1, вызывается toString () для entity2, который снова вызывает toString () для entity1 и т. Д. c ..

Либо удалите эти аннотации, если вы их не используете или настройте их так, чтобы не возникало бесконечных циклов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...