繁体   English   中英

Spring Data JPA 获取多个结果集

[英]Spring Data JPA get multiple result set

我尝试使用 JPA 获取返回值。 但是我的数据库过程返回多个结果,而 JPA 只获取第一个返回值。 如图所示。 我想要的结果是第三个,但我只得到第一个。 第三个怎么获得? 谢谢。

Java 结果数据库结果

实体.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM