java - 如何在 JPA 和 Hibernate 中返回所有值
问题描述
我有一个场景,正在尝试使用hibernate
and来返回 select 语句中的所有结果JPA
。由于某些奇怪的原因,所有数据库中的值的数量都得到了正确的计数,因此它返回了第一个值 x 次,而不是从查询中获取所有唯一值。我select * from HSEC01X where hea ='0184' and hnum='0005'
在数据库中执行时的查询输出
+-------+---------+--------+
| HEA | HNUM | HNAME |
+-------+---------+--------+
| 0184 | 0005 | John |
| 0184 | 0005 | Jane |
| 0184 | 0005 | janet |
| 0184 | 0005 | Arthur |
+-------+---------+--------+
这是我尝试过的。
@Query("SELECT e FROM HSEC01X e WHERE e.hea = ?1 AND e.hnum = ?2")
public Iterable<HSEC01X> findHSEC01XByheaAndhnum(@Param("hea") String hea, @Param("hnum") String hnum);
}
这个结果集有四条记录,但它只打印第一个结果四次,而不是在查询中找到的所有值,这是我json
得到的回复
[
{
"hea": "0014",
"hnum": "0005",
"hnames": "john"
},
{
"hea": "0014",
"hnum": "0005",
"hnames": "john"
},
{
"hea": "0014",
"hnum": "0005",
"hnames": "john"
},
{
"hea": "0014",
"hnum": "0005",
"hnames": "john"
}
]
而不是得到
[
{
"hea": "0014",
"hnum": "0005",
"hnames": "john"
},
{
"hea": "0014",
"hnum": "0005",
"hnames": "Jane"
},
{
"hea": "0014",
"hnum": "0005",
"hnames": "janet"
},
{
"hea": "0014",
"hnum": "0005",
"hnames": "Arthur"
}
]
这是模型
@Entity
@Table(name = "HSEC01X")
public class HSEC01X {
@Id
@Column(name = "HEA")
private String hea;
@Column(name = "HNUM")
private String hnum;
@Column(name = "HNAME")
private String hnames;
}
我的控制器
@GetMapping("/laptops/brandandprice")
public ResponseEntity<List<HSEC01X>> getLaptopsByBrandAndPrice(@RequestParam String hea, String hnum) {
return new ResponseEntity<>((List<HSEC01X>) hsec01X_repository.findHSEC01XByheaAndhnum(hea, hnum), HttpStatus.OK);
}
如何从 select 语句中正确返回所有不同的结果?
解决方案
您可以尝试为唯一的整数主键创建一个单独的字段并使用@JsonIgnore 对其进行注释。这将使您的数据库更具功能性,同时保持查询返回的 JSON 格式相同。
@Entity
@Table(name = "HSEC01X")
public class HSEC01X {
@Id
@JsonIgnore
@Column(name = "id")
private int id;
@Column(name = "HEA")
private String hea;
@Column(name = "HNUM")
private String hnum;
@Column(name = "HNAME")
private String hnames;
}
对于SQL查询,如果我没记错的话,写起来不是更简单Query("SELECT * FROM HSEC01X WHERE hea = ?1 AND hnum = ?2")
吗?
推荐阅读
- jquery - 多个微调器的递增或递减值
- python - 使用按钮和回调方法退出 python 程序
- r - 有没有一些方便的方法可以将 rmarkdown 转换为 pandoc markdown?
- c - 使用 strsep() 读取文本文件时出现空行/字符
- django - django 使用物化模式创建表单
- c++ - 设置从文件读取的开始和结束限制
- vba - 如何在 VBA 中传递 API 密钥以获取和发布请求?
- javascript - 如何使用python检查子域是否存在?
- reactjs - 直到我在选择标签中选择了两个选项之后,函数 onHandleChange 才会起作用
- r - 如何将 position_dodge 应用于同一图中的 geom_point 和 geom_text?