Nik*_*aya 3 java spring hibernate jpa
我有列出用户的简单程序。我用于@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
}
Run Code Online (Sandbox Code Playgroud)
自定义存储库
public interface UserRepositoryCustom {
List<?> testProc() ;
}
Run Code Online (Sandbox Code Playgroud)
存储库
public interface UserRepository extends JpaRepository<User, Long>,
UserRepositoryCustom{
}
Run Code Online (Sandbox Code Playgroud)
存储库实施
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;
}
}
Run Code Online (Sandbox Code Playgroud)
我需要带有列名称的结果。
小智 6
您可以在映射中获取列名称及其值。IE 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();
Run Code Online (Sandbox Code Playgroud)
当您想要在 HTML 中使用列名称作为占位符(其中值将在运行时替换它)时,这将非常有用。
| 归档时间: |
|
| 查看次数: |
10585 次 |
| 最近记录: |