通过Hibernate获取数据而不传递主键

时间:2018-05-14 04:44:16

标签: java oracle hibernate hql

我使用的复合主键在实体类中定义为:

@EmbeddedId
private ParticipantPrimaryKey pKey;

,主键由事件ID和学生ID组成,它们在PrimaryKey实体类中定义。

现在我需要从表中获取参与任何特定事件的参与者。

由于上述问题而无效的HQL查询:

select pe from ParticipantEntity pe where pe.eventId=?

如果我使用任何其他字段,那么它将起作用,因为它们存在于实体类中,但事件ID存在于primaryKey实体中。

1 个答案:

答案 0 :(得分:0)

您可以使用@ClassIdlike

 @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