【问题标题】:Trying to get related entities from H2 database in Java Spring Boot尝试在 Java Spring Boot 中从 H2 数据库中获取相关实体
【发布时间】:2020-07-12 02:31:17
【问题描述】:

我刚刚开始学习 Spring Boot,并且正在使用 H2 数据库,我几乎可以正常工作,但是我在尝试提出稍微复杂一点的请求时遇到了麻烦。我有 2 个表“用户”和“购买”,我想创建一个端点来返回包含给定用户 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);
    }
}

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

【问题讨论】:

    标签: spring-boot spring-data-jpa h2


    【解决方案1】:

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

    例如:

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

    您可以通过here 了解更多信息

    【讨论】:

    • 啊,好吧,我明白了,如果我在 repo 中定义了查询,我将如何将 id 传递给它。例如,如果请求正文包含有问题的 id,我将如何将 id 获取到 repo 方法
    • @Query("SELECT u FROM User u WHERE u.status = ?1") User findUserByStatus(Integer status); @Query("SELECT u FROM User u WHERE u.status = ?1 and u.name = ?2") User findUserByStatusAndName(Integer status, String name);
    • 你可以查看链接,在那里你会得到所有的信息
    猜你喜欢
    • 2018-12-21
    • 1970-01-01
    • 2022-07-09
    • 2019-05-17
    • 2019-02-14
    • 1970-01-01
    • 2015-10-09
    • 2022-01-04
    • 2020-12-25
    相关资源
    最近更新 更多