我使用的复合主键在实体类中定义为:
@EmbeddedId
private ParticipantPrimaryKey pKey;
,主键由事件ID和学生ID组成,它们在PrimaryKey实体类中定义。
现在我需要从表中获取参与任何特定事件的参与者。
由于上述问题而无效的HQL查询:
select pe from ParticipantEntity pe where pe.eventId=?
如果我使用任何其他字段,那么它将起作用,因为它们存在于实体类中,但事件ID存在于primaryKey实体中。
答案 0 :(得分:0)
您可以使用@ClassId
,like:
@ClassId(ParticipantPrimaryKey.class)
class ParticipantEntity { ...
从ParticipantEntity
:
@EmbeddedId
private ParticipantPrimaryKey pKey;
同样在ParticipantEntity
中,添加两个键:
@Id
private Long eventId;
@Id
private Long studentId;
之后,您可以:
SELECT pe FROM ParticipantEntity pe where pe.eventId = :eventId