При объединении сущностей в JPQL необходимо сопоставить каждую присоединяющуюся ссылку, чтобы разрешить обход отношений. Для этого сопоставление должно отражать наиболее распространенные отношения, которые могут потребоваться в запросах.
В вашем случае я предполагаю, что ваша сущность Account имеет сопоставление @OneToMany с транзакциями Txn и соответствующее сопоставление @ManyToOne из Txn на счет. Итак, ваш первый JPQL может быть записан как:
SELECT txn FROM Txn AS txn WHERE txn.account = :acct AND txn.crdr = :crdr
Этот запрос вернет все транзакции с заданными: acct и: crdr в виде списка.
При условии, что ваше поле txnDate может быть упорядочено, вы можете упорядочить список по дате и ограничить результат с помощью операторов ORDER BY и LIMIT JPQL:
SELECT txn FROM Txn AS txn WHERE txn.account = :acct AND txn.crdr = :crdr ORDER BY txn.txnDate DESC LIMIT 1
Поскольку Txn имеет отображение @ManyToOne на учетная запись, результат, если он существует, позволит вам получить все ранее загруженные свойства Txn, поэтому к нему можно получить доступ из учетной записи.