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

标签 java oracle hibernate hql

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

@EmbeddedId
private ParticipantPrimaryKey pKey;

主键由PrimaryKey实体类中定义的Event Id和Student Id组成。

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

由于上述问题而无法运行的 HQL 查询:

select pe from ParticipantEntity pe where pe.eventId=?

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

最佳答案

您可以使用@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

关于java - 通过Hibernate获取数据而不传递主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50323227/

相关文章:

java - 使用 Maven 配置在 Eclipse 中为 Hadoop 作业设置 Java 堆空间

java - 将字符串解析为时间使得 01 :00:00

java - 在 Oracle DB 中唯一标识源 JDBC 进程

java - Hibernate 中稍微复杂的 ManyToMany 关系

java - Spring Boot+Hibernate关系问题

java - 在哪里放置 swagger 生成的服务器代码的代码

Java 运行时 exec() 行为

database - (oracle) 与手动运行插入相比,在存储过程中插入非常慢

oracle - 每月定期进行数据过滤

java - 在 JPA 2.0 中维护关系