Несмотря на то, что я помечаю их как ленивые или пытаюсь использовать join fetch, Hibernate по -прежнему генерирует очень длинные и сложные запросы SQL при извлечении этой сущности.
Код: Выделить всё
@Getter
@Setter
@Entity
@Table(name = "yer_ustyapi")
public class Ustyapi extends SBPBaseEntity {
@Column(name = "adi", length = 512, nullable = false)
private String adi;
@Column(name = "sebatlas_oid")
private String sebatlasOid;
@JsonIgnoreProperties({"serbestBolge", "olusturan", "olusturmaTarihi", "sonGüncelleyen", "sonGüncellemeTarihi"})
@ManyToOne(fetch = FetchType.EAGER, targetEntity = Parsel.class)
@JoinColumn(name = "parsel", referencedColumnName = "oid", nullable = false)
private Parsel parsel;
@JsonIgnoreProperties({"bkiFirma", "olusturan", "olusturmaTarihi", "sonGüncelleyen", "sonGüncellemeTarihi"})
@ManyToOne(fetch = FetchType.EAGER, targetEntity = SerbestBolge.class)
@JoinColumn(name = "sbolge", referencedColumnName = "oid", nullable = false)
private SerbestBolge serbestBolge;
@ManyToOne(fetch = FetchType.EAGER, targetEntity = Il.class)
@JoinColumn(name = "il", referencedColumnName = "oid")
private Il il;
@ManyToOne(fetch = FetchType.EAGER, targetEntity = Ilce.class)
@JoinColumn(name = "ilce", referencedColumnName = "oid")
private Ilce ilce;
@ManyToOne(fetch = FetchType.EAGER, targetEntity = Mahalle.class)
@JoinColumn(name = "mahalle", referencedColumnName = "oid")
private Mahalle mahalle;
@ManyToOne(fetch = FetchType.EAGER, targetEntity = Sokak.class)
@JoinColumn(name = "sokak", referencedColumnName = "oid")
private Sokak sokak;
// ... and many more ManyToOne fields ...
}
< /code>
Всякий раз, когда я пытаюсь получить эту сущность, Hibernate генерирует очень длинные запросы с большим количеством соединений. Например: < /p>
Hibernate: select u1_0.oid,u1_0.iskan_belge_no,u1_0.adi,u1_0.aktif, ... from yer_ustyapi u1_0 left join ... left join ... left join ... -- query continues for a very long timeЭто создает проблемы с производительностью и делает отладку чрезвычайно трудной. /> Я уже пробовал @batchsize, присоединяйтесь к Fetch и Lazy, но результаты все еще не были оптимальными.
У сущности слишком много отношений @manytoone, но мне все время не нужны. излишне длинные запросы?
Есть ли способ выбрать только корневые объекты и ассоциации только при необходимости, но при этом все равно будет совместимым со спецификацией?
использование EntityGraph (с JpaspeciationExecutor) будет хорошим посадкой? Если да, как я могу интегрировать это правильно? Могу ли я настроить эту сущность, чтобы Hibernate не генерировал излишне длинные запросы?
Есть ли способ выбрать только корневую сущность и извлекать ассоциации только при необходимости, но все же сделать его совместимым со спецификацией? Если да, то как я могу это правильно интегрировать?
Подробнее здесь: https://stackoverflow.com/questions/797 ... sociations
Мобильная версия