Jpa @CollectionTable очень медленный запросJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Jpa @CollectionTable очень медленный запрос

Сообщение Anonymous »


У меня есть этот объект

@Entity @Table(name = "GEO_MUNICIPALITY", индексы = { @Index(name = "idx_municialityentity", columnsList = "PROVINCE_CODE") }) ... общественный класс МуниципалитетEntity { @Идентификатор @Column(name = "MUNICIPALITY_CODE", nullable = false) частный строковый код; @Column (обнуляемый = ложь) частное имя строки; @ManyToOne(выборка = FetchType.LAZY) @JoinColumn(name = "PROVINCE_CODE") частная провинцияОбъект провинции; @ElementCollection @CollectionTable(name = "GEO_MUNICIPALITY_POSTAL_CODE", joinColumns = @JoinColumn(name = "КОД_МУНИЦИПАЛИТЕТА"), индексы = { @Index(name = "idx_municipalityentity_postal_code", columnsList = "MUNICIPALITY_CODE") }) @Column(name = "POSTAL_CODE") частный список postalCodeList; } @Entity @Table(name = "GEO_PROVINCE") ... общественный класс ПровинцияЕнтити { @Идентификатор @Column (обнуляемый = ложь) частный строковый код; ... } Теперь моему API нужно отобразить все муниципалитеты (со всеми почтовыми индексами муниципалитетов) с заданным кодом провинции, поэтому у меня есть такой класс репозитория:

@Repository общедоступный интерфейс МуниципалитетJpaRepository расширяет JpaRepository { List findAllByProvinceCode (строковая провинция); @Query («выберите m из Муниципального объекта m слева присоединиться к m.postalCodeList postalCodeList, где m.province.code = ?1») List findByCode(String code); } Эти два метода делают одно и то же, и я попробовал оба способа (результат один и тот же), потому что когда я вызываю getPostalCodeList(), запрос выполняется очень медленно, потому что он делает выбор для каждого результат муниципалитета (для получения почтовых индексов).

Как я могу улучшить производительность? Кроме того, поскольку я всегда ищу муниципалитеты по коду, стоит ли сделать индекс таким, как в коде? Спасибо!

Я пробовал использовать репозиторий jpa и собственный запрос. Я ожидал быстрого выполнения запроса, но выполнение происходит очень медленно, поскольку после запроса на соединение приложение делает запрос для каждого полученного муниципалитета, чтобы получить почтовые индексы.
Ответить

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

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

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

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

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