尝试从 Java Spring Boot 中的 H2 数据库中获取相关实体

Trying to get related entities from H2 database in Java Spring Boot

我刚刚开始学习 Spring Boot 并且正在使用 H2 数据库,我几乎所有的东西都在工作,但是我 运行 在尝试提出稍微复杂的请求时遇到了麻烦.我有 2 个表 'User' 和 'Purchase',我想创建并结束 returns 所有包含给定用户 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);
    }
}

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

Yoy 可以使用@Query() 注解来编写查询。 您需要在您的存储库中声明一个方法,然后您可以在该方法上放置此注释。

例如:

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

你可以从 here

那里得到更多的想法