尝试在 Java Spring Boot 中从 H2 数据库中获取相关实体
Posted
技术标签:
【中文标题】尝试在 Java Spring Boot 中从 H2 数据库中获取相关实体【英文标题】:Trying to get related entities from H2 database in Java Spring Boot 【发布时间】: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);
这基本上是两个实体的设置,我不确定在哪里以及如何编写更具体的查询。任何帮助将不胜感激。
【问题讨论】:
【参考方案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); 你可以查看链接,在那里你会得到所有的信息以上是关于尝试在 Java Spring Boot 中从 H2 数据库中获取相关实体的主要内容,如果未能解决你的问题,请参考以下文章
无法在 spring-boot 应用程序中从 Consul 读取配置
如何在 Spring Boot 中从 MongoDb 中仅读取特定的 JSON 节点
在 Spring Boot 中从 Angular 向后端发送 post 请求中的对象的问题