提问者:小点点

尝试从Java spring boot H2数据库中获取相关实体


我刚开始学习spring boot,正在使用一个H2数据库,我已经得到了大部分的工作,但我遇到了麻烦,试图提出一个稍微复杂的请求。我有两个表'user'和'purche',我想创建和结束点,返回包含给定用户ID的所有购买。如果我使用SQL联接或一些类似的查询,这似乎很简单,但我不知道如何实现。

我有一个用于用户和购买的存储库(CrudRepository),然后有一个用于从数据库获取相关数据的服务。这很适合get、getById等基本需求,但我不知道如何指定查询,如join等。

public interface UserRepo extends CrudRepository<User, Integer> {}

public interface ReceiptRepo extends CrudRepository<Receipt, Integer> {}

@Service
public class UserService {
    @Autowired
    UserRepo userRepo;
 
    public User getUser(int id) { return userRepo.findById(id).get(); }
}

@RestController
public class UserController {
    @Autowired
    UserService userService;

    @GetMapping("/user/{id}")
    private User getUser(@PathVariable("id") int id) {
        return userService.getUser(id);
    }
}

这基本上是两个实体的设置,我不确定在哪里以及如何编写更具体的查询。如有任何帮助,将不胜感激。


共1个答案

匿名用户

Yoy可以使用@query()注释来编写查询。您需要在repo中声明一个方法,并且可以在该方法上放置这个注释。

例如:

@Query("SELECT u FROM User u WHERE u.status = 1")
Collection<User> findAllActiveUsers();

你可以从这里了解更多的信息