ПРАВИЛЬНОЕ СОЕДИНЕНИЕ в JPQL

У меня есть следующие объекты JPA :

@Entity
class UserClient{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;
}

@Entity
class UserAccess{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;

    @ManyToOne(optional = false, cascade = { CascadeType.REFRESH })
    private UserClient user;

    @Temporal(TemporalType.TIMESTAMP)
    private Date accessTs;
}

Теперь я хотел запустить запрос JPQL , чтобы получить список пользователи с их последней датой доступа. К сожалению, следующий запрос не возвращает пользователей, которые никогда не обращались к системе, то есть существуют в таблице UserClient , но не имеют записей в таблице UserAccess .

SELECT ua.user, MAX(ua.accessTs) FROM UserAccess ua RIGHT JOIN ua.user

Я что-то упускаю? Это правильное использование RIGHT JOIN?

Я использую последнюю версию Hibernate JPA (4.0.0.CR1)

8
задан Hash 21 March 2017 в 15:07
поделиться