gpt4 book ai didi

java - 如何在Spring数据JPA中获取结果集中的列名

转载 作者:行者123 更新时间:2023-11-30 10:25:29 25 4
gpt4 key购买 nike

我有列出用户的简单程序。我正在使用 @NamedStoredProcedureQueries 进行过程声明,并使用 EntityManager.createNamedStoredProcedureQuery 进行 StoredProcedureQuery

它会正确返回结果,但我需要列名以便我知道哪个值对应哪个列。

我的代码是这样的

实体类

@Entity
@NamedStoredProcedureQueries({ @NamedStoredProcedureQuery(name =
"sGetUserList", procedureName = "sGetUserList", parameters = {
@StoredProcedureParameter(mode = ParameterMode.IN, name = "user_id", type =
Integer.class) })
})
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;

private String name;

private String email;

//getters and setters
}

自定义存储库

public interface UserRepositoryCustom {
List<?> testProc() ;
}

存储库

public interface UserRepository extends JpaRepository<User, Long>, 
UserRepositoryCustom{

}

存储库实现

public class UserRepositoryImpl implements UserRepositoryCustom{

@PersistenceContext
EntityManager em;

public List<Object> testProc() {

StoredProcedureQuery q = em.createNamedStoredProcedureQuery("sGetUserList");
q.setParameter("user_id", 1);
List<Object> res = q.getResultList();

return res;
}
}

我需要带有列名的结果。

最佳答案

您可以在 Map 中获取列名称及其值。即Map<'column-name', value> .

Query query = entityManager.createNativeQuery("{call <<Your procedure>>}");
NativeQueryImpl nativeQuery = (NativeQueryImpl) query;
nativeQuery.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);
List<Map<String,Object>> result = nativeQuery.getResultList();

如果您想在 HTML 中使用列名作为占位符,值将在运行时替换它,这将非常有用。

关于java - 如何在Spring数据JPA中获取结果集中的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46171240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com