[英]Spring Data JPA get multiple result set
我尝试使用 JPA 获取返回值。 但是我的数据库过程返回多个结果,而 JPA 只获取第一个返回值。 如图所示。 我想要的结果是第三个,但我只得到第一个。 第三个怎么获得? 谢谢。
实体.java
@Entity
@NamedStoredProcedureQueries(
{
@NamedStoredProcedureQuery(
name = "SpringTestProcedure",
procedureName = "SpringTestProcedure",
parameters = {
@StoredProcedureParameter(mode = ParameterMode.IN, name = "id", type = Test.class),
@StoredProcedureParameter(mode = ParameterMode.IN, name = "firstName", type = Test.class),
@StoredProcedureParameter(mode = ParameterMode.IN, name = "lastName", type = Test.class)
}
)
}
)
@Table(name = "Users")
public class Test {
public Test() {
}
public Test(Integer id, String firstName, String lastName) {
this.id = id;
this.firstName = firstName;
this.lastName = lastName;
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Integer id;
@Column(name = "firstName")
private String firstName;
@Column(name = "lastName")
private String lastName;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
存储库.java
@Repository
public interface SpringTestRepository extends JpaRepository<Test, Integer> {
@Procedure(procedureName = "SpringTestProcedure")
public List<Object[]> getEntity(@Param("id") Integer id,
@Param("firstName") String firstName,
@Param("lastName") String lastName);
}
ServiceImpl.java
@Service
public class SpringTestServiceImpl implements SpringTestService {
@Autowired
private SpringTestRepository springTestRepository;
@Override
public Test getEntity(Integer id, String firstName, String lastName) {
List<Object[]> list = springTestRepository.getEntity(id, firstName, lastName);
for (Object[] object : list) {
System.out.println(Arrays.toString(object));
}
return null;//springTestRepository.getEntity(id, firstName, lastName);
}
}
更改参数类型
parameters = {
@StoredProcedureParameter(mode = ParameterMode.IN, name = "id", type = Integer.class),
@StoredProcedureParameter(mode = ParameterMode.IN, name = "firstName", type = String.class),
@StoredProcedureParameter(mode = ParameterMode.IN, name = "lastName", type = String.class)
}
更改方法getEntity
@Override
public Test getEntity(Integer id, String firstName, String lastName) {
List<Test> list = springTestRepository.getEntity(id, firstName, lastName);
for (Test test : list) {
System.out.println(test.getId()+" "+test.getFirstName()+" "+test.getLastName());
}
return list.get(2);//springTestRepository.getEntity(id, firstName, lastName);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.