@Entity
@Table(name = "t_wday")
@IdClass(DayPk.class)
public class Day {
@Id
private Date id;
..
..
}
@Embeddable
public class DayPk {
@Column(name = "idwday")
private Date id;
...
... other key properties
...
}
@Entity
@Table(name = "t_assigned")
@IdClass(AssignedPk.class)
public class Assigned {
@Id
@ManyToOne
private Day day;
...
...
}
@Embeddable
public class AssignedPk {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({
@JoinColumn(name = "t_wday_idwday", referencedColumnName = "idwday"),
@JoinColumn(name = "t_user_iduser", referencedColumnName = "t_user_iduser")
})
private Day day;
...
... other key properties
...
}
クエリを作成しようとすると
getSession().createQuery("FROM Day as day WHERE day.user = :user YEAR(day.id) = :year")
動作しますが、次のようなクエリを作成しようとすると
getSession().createQuery("FROM Assigned as assig WHERE YEAR(assig.day.id) = :year")
例外があります
could not resolve property: day.id of: com.db.entity.Assigned .....
しかし、DayPk のフィールド ID とエンティティ Day のフィールドの名前を idwday に変更すると、クエリは機能します
誰か助けてください