@Query с оператором OR

277
16 сентября 2017, 23:30

У меня есть такой метод:

@Query("SELECT t FROM Transaction t WHERE t.debitAccount.user.id=:userId OR t.refillAccount.user.id=:userId")
    List<Transaction> findByUserId(@Param("userId") int userId)

Но он возвращает не тот набор данных, который я ожидаю.

Мне нужно, чтобы он возвращал сразу то, что возвращают вот эти два запроса по отдельности:

@Query("SELECT t FROM Transaction t WHERE t.debitAccount.user.id=:userId")
    List<Transaction> findByUserId(@Param("userId") int userId)

@Query("SELECT t FROM Transaction t WHERE t.refillAccount.user.id=:userId")
    List<Transaction> findByUserId(@Param("userId") int userId)

Кто-нибудь знает в чем проблема?

По userId = 100001 выдает:

Hibernate: select transactio0_.id as id1_1_, transactio0_.amount as amount2_1_, transactio0_.date as date3_1_, transactio0_.debit_account_id as debit_ac5_1_, transactio0_.description as descript4_1_, transactio0_.refill_account_id as refill_a6_1_ from transactions transactio0_ cross join accounts account1_ cross join accounts account2_ where transactio0_.debit_account_id=account1_.id and transactio0_.refill_account_id=account2_.id and (account1_.user_id=? or account2_.user_id=?) Hibernate: select account0_.id as id1_0_0_, account0_.amount as amount2_0_0_, account0_.user_id as user_id3_0_0_, user1_.id as id1_2_1_, user1_.address as address2_2_1_, user1_.age as age3_2_1_, user1_.name as name4_2_1_ from accounts account0_ left outer join users user1_ on account0_.user_id=user1_.id where account0_.id=? Hibernate: select account0_.id as id1_0_0_, account0_.amount as amount2_0_0_, account0_.user_id as user_id3_0_0_, user1_.id as id1_2_1_, user1_.address as address2_2_1_, user1_.age as age3_2_1_, user1_.name as name4_2_1_ from accounts account0_ left outer join users user1_ on account0_.user_id=user1_.id where account0_.id=? Hibernate: select account0_.id as id1_0_0_, account0_.amount as amount2_0_0_, account0_.user_id as user_id3_0_0_, user1_.id as id1_2_1_, user1_.address as address2_2_1_, user1_.age as age3_2_1_, user1_.name as name4_2_1_ from accounts account0_ left outer join users user1_ on account0_.user_id=user1_.id where account0_.id=?

Transaction{Id=100009, debitAccountId=100003, refillAccountId=100008, amount=100, description=To User0, date=2017-09-01 12:00:00.0} Transaction{Id=100011, debitAccountId=100008, refillAccountId=100003, amount=200, description=From User0, date=2017-09-01 20:00:00.0} Transaction{Id=100012, debitAccountId=100003, refillAccountId=100006, amount=250, description=From User1, date=2017-09-02 12:00:00.0} Transaction{Id=100015, debitAccountId=100003, refillAccountId=100008, amount=215, description=To account 100008 from account 100003, date=2017-09-15 13:20:48.089}

А жду Transaction-ы с id 100009, 100010, 100011, 100012, 100015, 100017, 100018, т.к. аккаунты 100003 и 100004 имеют userId = 100001

READ ALSO
Java Jpa One To Many Problems [требует правки]

Java Jpa One To Many Problems [требует правки]

I have problem with extracting dataI have next entities

238
Как поменять родительный падеж в temporals.format(&hellip;)?

Как поменять родительный падеж в temporals.format(…)?

Использую Thymeleaf и при выводе месяца, он почему-то выводится в родительном падеже, и я никак не могу понять почему

298
javascript функция игнорирует условие в if

javascript функция игнорирует условие в if

Есть некая js консоль на тестируемом сервисе с описанием объектов и куском кода в котором необходимо менять условие в зависимости от требованийВ...

225
SQL Java SELECT

SQL Java SELECT

Самый простой вопрос по SQLite, так как только начал изучать - как составить query для чтения всех имен с двух таблицЕсть таблица - mentors и applicants, обе...

240