Spring:如何在不使用主键的情况下使用JpaRepository方法检索实体集?

时间:2017-09-20 05:28:25

标签: java mysql maven spring-mvc spring-data-jpa

我想从我的数据库中检索给定id的实体列表。但是这个id不是我表的主键。

public List<Notification> view(ApplicationUser applicationUser){
    List<Notification> notification = repository.findAll();  

    return notification;
}

在我的代码中,我有一个applicationUser ID,它不是通知表的主键。它只是一把外键。在上面的例子中,我可以检索整个表。我也尝试了repository.getOne()方法。但我的要求不能完全满足。

我想将所有实体都放到通知列表中,其中我的表的appliclationUserId字段等于用户提供的值。

这是我的通知表

CREATE TABLE `notification` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`),
  `message` varchar(100),
  `dateAndTime` time DEFAULT NULL,
  `read` tinyint(1) NOT NULL DEFAULT '0',
  `notificationType` int(11) DEFAULT NULL
  `userId` bigint(20),
  FOREIGN KEY (`userId`) REFERENCES `application_user` (`id`)
);

非常感谢任何帮助.z

1 个答案:

答案 0 :(得分:2)

存储库类:

 @Query("select nt from notification nt where nt.userId = ?1") 
  List<Notification> findByUserId(BigInteger userId); 

致电:

repository.findByUserId(BigInteger.valueOf(applicationUser.getId());