0
我在嘗試選擇與給定用戶關聯的最新添加鍛鍊集。選擇用戶設置的最新鍛鍊
用戶的會話和會話已設置。我的實體定義如下。
@Entity(name = "users") // Postgres doesn't like the table name "user"
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@OneToMany(mappedBy = "user")
private Set<Session> sessions;
...
@Entity
public class Session {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@ManyToOne
private User user;
@OneToMany(mappedBy = "session")
private Set<WorkoutSet> sets;
...
@Entity
public class WorkoutSet {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@OneToOne
private User user;
@ManyToOne
private Session session;
private LocalDateTime timestamp = LocalDateTime.now();
...
下面的SQL查詢,似乎這樣的伎倆
select w
from workout_set w
inner join session s
on w.session_id = s.id
where s.user_id = 1
order by w.timestamp DESC
limit 1
但是,當我試圖做類似下面的
@Repository
public interface WorkoutSetRepository extends CrudRepository<WorkoutSet, Long> {
@Query("select w from WorkoutSet w inner join Session s on w.session_id = s.id where s.user = :user order by w.timestamp")
List<WorkoutSet> findLastSet(User user, Pageable limit);
我得到...
org.springframework.data.mapping.PropertyReferenceException: No property user found for type WorkoutSet!
任何線索關於如何做que對嗎?我對其他方法也很開放,因爲如果可能的話,我寧願避免編寫jpql。