Проблема с большим запросом в SQLite3 через hibernate

Проблема с hibernate работающем с СУБД SQLite3. Есть entity File у которой есть собственник, сообщение-источник, чат от куда отправлен файл и так далее. В общем-то это все в рамках бота социальной сети происходит. Так вот почти все поля сущности файл это ссылки на другие сущности. И когда я ищу файл по его идентификатору, то хибернейт пытается подтянуть и сущности-поля этой сущности само-собой.

В режиме отображения запросов итоговый запрос поиска файла по его ключу выглядит так

    select
        filedto0_.id as id1_8_0_,
        filedto0_.created as created2_8_0_,
        filedto0_.updated as updated3_8_0_,
        filedto0_."content" as content4_8_0_,
        filedto0_.filename as filename5_8_0_,
        filedto0_.message_id as message_7_8_0_,
        filedto0_.original_filename as original6_8_0_,
        rawmessage1_.id as id1_13_1_,
        rawmessage1_.created as created2_13_1_,
        rawmessage1_.updated as updated3_13_1_,
        rawmessage1_.chat_id as chat_id6_13_1_,
        rawmessage1_.messageid as messagei4_13_1_,
        rawmessage1_.message_json as message_5_13_1_,
        rawmessage1_.user_id as user_id7_13_1_,
        chatdto2_.id as id1_1_2_,
        chatdto2_.created as created2_1_2_,
        chatdto2_.updated as updated3_1_2_,
        chatdto2_.company_owner_id as company_7_1_2_,
        chatdto2_.is_private as is_priva4_1_2_,
        chatdto2_.telegram_chatid as telegram5_1_2_,
        chatdto2_.title as title6_1_2_,
        companydto3_.id as id1_5_3_,
        companydto3_.created as created2_5_3_,
        companydto3_.updated as updated3_5_3_,
        companydto3_.name as name4_5_3_,
        chats4_.companies_id as companie1_7_4_,
        chatdto5_.id as chats_id2_7_4_,
        chatdto5_.id as id1_1_5_,
        chatdto5_.created as created2_1_5_,
        chatdto5_.updated as updated3_1_5_,
        chatdto5_.company_owner_id as company_7_1_5_,
        chatdto5_.is_private as is_priva4_1_5_,
        chatdto5_.telegram_chatid as telegram5_1_5_,
        chatdto5_.title as title6_1_5_,
        users6_.chats_id as chats_id2_19_6_,
        userdto7_.id as users_id1_19_6_,
        userdto7_.id as id1_18_7_,
        userdto7_.created as created2_18_7_,
        userdto7_.updated as updated3_18_7_,
        userdto7_.firstname as firstnam4_18_7_,
        userdto7_.lastname as lastname5_18_7_,
        userdto7_.telegram_userid as telegram6_18_7_,
        userdto7_.username as username7_18_7_,
        workers8_.companies_id as companie1_6_8_,
        workerdto9_.id as workers_2_6_8_,
        workerdto9_.id as id1_20_9_,
        workerdto9_.created as created2_20_9_,
        workerdto9_.updated as updated3_20_9_,
        workerdto9_.company_id as company_5_20_9_,
        workerdto9_."right" as right4_20_9_,
        workerdto9_.user_id as user_id6_20_9_,
        companydto10_.id as id1_5_10_,
        companydto10_.created as created2_5_10_,
        companydto10_.updated as updated3_5_10_,
        companydto10_.name as name4_5_10_,
        userdto11_.id as id1_18_11_,
        userdto11_.created as created2_18_11_,
        userdto11_.updated as updated3_18_11_,
        userdto11_.firstname as firstnam4_18_11_,
        userdto11_.lastname as lastname5_18_11_,
        userdto11_.telegram_userid as telegram6_18_11_,
        userdto11_.username as username7_18_11_,
        userdto12_.id as id1_18_12_,
        userdto12_.created as created2_18_12_,
        userdto12_.updated as updated3_18_12_,
        userdto12_.firstname as firstnam4_18_12_,
        userdto12_.lastname as lastname5_18_12_,
        userdto12_.telegram_userid as telegram6_18_12_,
        userdto12_.username as username7_18_12_ 
    from
        files filedto0_ 
    inner join
        raw_messages rawmessage1_ 
            on filedto0_.message_id=rawmessage1_.id 
    left outer join
        chats chatdto2_ 
            on rawmessage1_.chat_id=chatdto2_.id 
    left outer join
        companies companydto3_ 
            on chatdto2_.company_owner_id=companydto3_.id 
    left outer join
        company_chats chats4_ 
            on companydto3_.id=chats4_.companies_id 
    left outer join
        chats chatdto5_ 
            on chats4_.chats_id=chatdto5_.id 
    left outer join
        users_chats users6_ 
            on chatdto5_.id=users6_.chats_id 
    left outer join
        users userdto7_ 
            on users6_.users_id=userdto7_.id 
    left outer join
        companies_workers workers8_ 
            on companydto3_.id=workers8_.companies_id 
    left outer join
        workers workerdto9_ 
            on workers8_.workers_id=workerdto9_.id 
    left outer join
        companies companydto10_ 
            on workerdto9_.company_id=companydto10_.id 
    left outer join
        users userdto11_ 
            on workerdto9_.user_id=userdto11_.id 
    left outer join
        users userdto12_ 
            on rawmessage1_.user_id=userdto12_.id 
    where
        filedto0_.id=?

а в java коде это выглядит примерно так:

this.getEm().find(File.class, id);

Такой большой запрос в консоли sqlite3.exe тоже НЕ дает ни какого результата. Видимо это ограничения на количество объединений в запросе у самой СУБД, а вот если я включаю весь проект на postgresql, то запрос формируется такой же, но он корректно работает. Проверил на всех "сложных" entity.

Но я хочу, что бы проект целиком работал на sqlite3, и на postgresql. Как хибернейту сказать, что бы он использовал больше запросов, но с меньшей вложенностью? Есть вообще такая возможность?


Ответы (0 шт):