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!
キューの操作方法に関する手がかりどう?可能であれば、jpqlを書くのをやめてしまうので、私は別の方法にもとてもオープンです。