我必须在Hibernate中转换以下NamedSqlParameterSource: -
final List<MenuActionMapping> menusList;
MapSqlParameterSource sqlParams = new MapSqlParameterSource();
menusList = namedParameterJdbcTemplate.query("call sp_proc()",sqlParams ,new RowMapper<MenuActionMapping>() {
@Override
public MenuActionMapping mapRow(ResultSet resultset, int i)
throws SQLException {
MenuActionMapping menuActionMapping=new MenuActionMapping();
menuActionMapping.setMenuKey(resultset.getString("KMM_MENU_KEY"));
menuActionMapping.setDisplayName(resultset.getString("KMM_DISPLAY_NAME"));
menuActionMapping.setMenuActionFlag(resultset.getInt("KMM_ACTION_FLAG"));
menuActionMapping.setMenuActive(resultset.getInt("KMM_ACTIVE"));
menuActionMapping.setMenuLevel(resultset.getInt("str_len"));
String str=resultset.getString("menu_actions");
String [] actions=str.split(",");
if(resultset.getInt("KRMM_ACTIVE")==1)
{
menuActionMapping.setActive(true);
}
else
{
menuActionMapping.setActive(false);
}
for(String strAct:actions)
{
if(strAct.equals("ADD"))
{
menuActionMapping.setAddCheckBox(true);
menuActionMapping.setAddCheckBoxDisabled("true");
}
if(strAct.equals("VIEW"))
{
menuActionMapping.setViewCheckBox(true);
menuActionMapping.setViewCheckBoxDisabled("true");
}
if(strAct.equals("DELETE"))
{
menuActionMapping.setDeleteCheckBox(true);
menuActionMapping.setDeleteCheckBoxDisabled("true");
}
if(strAct.equals("EDIT"))
{
menuActionMapping.setEditCheckBox(true);
menuActionMapping.setEditCheckBoxDisabled("true");
}
if(strAct.equals("DOWNLOAD"))
{
menuActionMapping.setDownloadCheckBox(true);
menuActionMapping.setDownloadCheckBoxDisabled("true");
}
}
return menuActionMapping;
}
});
System.out.println(menusList);
return menusList;
我不知道namedJdbcTemplate和Map Row如何工作,所以我遇到了一个问题.. 我还在hibernate中编写了替代代码,但它不起作用: -
final List<MenuActionMapping> menusList;
Query query= getSession().createSQLQuery("call kyc.sp_proc()");
menusList=query.list();
System.out.println(menusList);
return menusList;
我认为我没有设置MenuAction Mapping Object以便如何实现目的?
此外,我想在将其设置为对象之前操纵列 我如何在休眠中执行此操作....
困扰我的主要代码是: -
String str=resultset.getString("menu_actions");
String [] actions=str.split(",");
if(resultset.getInt("KRMM_ACTIVE")==1)
{
menuActionMapping.setActive(true);
}
else
{
menuActionMapping.setActive(false);
}
for(String strAct:actions)
{
if(strAct.equals("ADD"))
{
menuActionMapping.setAddCheckBox(true);
menuActionMapping.setAddCheckBoxDisabled("true");
}
if(strAct.equals("VIEW"))
{
menuActionMapping.setViewCheckBox(true);
menuActionMapping.setViewCheckBoxDisabled("true");
}
if(strAct.equals("DELETE"))
{
menuActionMapping.setDeleteCheckBox(true);
menuActionMapping.setDeleteCheckBoxDisabled("true");
}
if(strAct.equals("EDIT"))
{
menuActionMapping.setEditCheckBox(true);
menuActionMapping.setEditCheckBoxDisabled("true");
}
if(strAct.equals("DOWNLOAD"))
{
menuActionMapping.setDownloadCheckBox(true);
menuActionMapping.setDownloadCheckBoxDisabled("true");
}
如何在hibernate中设置基于1列的多属性...
答案 0 :(得分:1)
namedJdbcTemplate
可帮助您减少样板代码,例如获取,关闭连接等,而行映射器可帮助您迭代返回的结果集并将其映射到所需的Java类。
请检查此http://www.mkyong.com/hibernate/how-to-call-store-procedure-in-hibernate/
答案 1 :(得分:0)
感谢How to map columns in hibernate with class attributes?上的@Pratik 我得到了我的问题的答案我可以使用hibernate中的BasicTransformerAdapter在hibernate中实现与jdbc模板的行mappper相同。我的代码如下: -
final List<MenuActionMapping> menusList;
menusList = getSession().createSQLQuery("CALL kyc.sp_proc()").setResultTransformer(new BasicTransformerAdapter() {
private static final long serialVersionUID = 1L;
@Override
public Object transformTuple(Object[] tuple, String[] aliases)
{
MenuActionMapping menuActionMapping=new MenuActionMapping();
menuActionMapping.setMenuId((Integer)tuple[0]);
menuActionMapping.setMenuKey((String)tuple[1]);
menuActionMapping.setDisplayName((String)tuple[3]);
menuActionMapping.setMenuActionFlag((Integer)tuple[5]);
final Boolean b=(Boolean)tuple[6];
menuActionMapping.setMenuActive(b? 1 : 0);
final BigInteger big=(BigInteger) tuple[9];
menuActionMapping.setMenuLevel(big.intValue());
String str=(String)tuple[10];
String [] actions=str.split(",");
if(b==true)
{
menuActionMapping.setActive(true);
}
else
{
menuActionMapping.setActive(false);
}
for(String strAct:actions)
{
if(strAct.equals("ADD"))
{
menuActionMapping.setAddCheckBox(true);
menuActionMapping.setAddCheckBoxDisabled("true");
}
if(strAct.equals("VIEW"))
{
menuActionMapping.setViewCheckBox(true);
menuActionMapping.setViewCheckBoxDisabled("true");
}
if(strAct.equals("DELETE"))
{
menuActionMapping.setDeleteCheckBox(true);
menuActionMapping.setDeleteCheckBoxDisabled("true");
}
if(strAct.equals("EDIT"))
{
menuActionMapping.setEditCheckBox(true);
menuActionMapping.setEditCheckBoxDisabled("true");
}
if(strAct.equals("DOWNLOAD"))
{
menuActionMapping.setDownloadCheckBox(true);
menuActionMapping.setDownloadCheckBoxDisabled("true");
}
}
return menuActionMapping;
}
}).list();