gpt4 book ai didi

java - 将 Hibernate 查询存储在变量中

转载 作者:行者123 更新时间:2023-11-30 11:03:18 27 4
gpt4 key购买 nike

我们正在使用 hibernate 在 mysql 数据库中插入/更新/删除数据。每当触发 hibernate 查询时,它都会显示在控制台上。但我的要求是将查询存储在数据库中以供审计。因此我需要将查询存储在一个字符串变量中,以便我可以进一步将其保存在数据库中。

public int updatebarePumpData(Tbl13BarePumpData barePumpData)
{
if (log.isInfoEnabled())
log.info("start--BarePumpGADaoImpl---updatebarePumpData");
int ans = 0;
session = HibernateUtil.getSessionFactory().getCurrentSession();
try
{
tx = session.beginTransaction();
Tbl13BarePumpData barepumpObj = (Tbl13BarePumpData) session.load(Tbl13BarePumpData.class, barePumpData.getBarePumpdataId());
barepumpObj.getBarePumpdataId();
barepumpObj.setParameter(barePumpData.getParameter());
barepumpObj.setValue(barePumpData.getValue());
barepumpObj.setModifiedBy(barePumpData.getModifiedBy());
barepumpObj.setModifiedDate(barePumpData.getModifiedDate());
session.save(barepumpObj);
tx.commit();
ans = barepumpObj.getBarePumpdataId();
}
catch (Exception e)
{
if (tx != null && tx.isActive())
tx.rollback();
log.error(e.getMessage(), e);
}

if (log.isInfoEnabled())
log.info("end--BarePumpGADaoImpl---updatebarePumpData");
return ans;
}

控制台输出为

Hibernate: update pumpManagement_mp.dbo.tbl_13_barePump_data set barepumpga_id=?, parameter=?, value=?, createdBy=?, createdDate=?, modifiedBy=?, modifiedDate=?, company=? where barePumpdata_id=?

我想在变量中有相同的输出

String qry=hibernate show query

任何帮助将不胜感激

感谢和问候,Pranav C Lunavat

最佳答案

以下代码帮助您获取Criteria的sql查询。

Criteria criteria = session.createCriteria(User.class);

CriteriaImpl c = (CriteriaImpl)criteria;
SessionImpl s = (SessionImpl)c.getSession();

SessionFactoryImplementor factory = (SessionFactoryImplementor)s.getSessionFactory();
String[] implementors = factory.getImplementors( c.getEntityOrClassName() );
CriteriaLoader loader = new CriteriaLoader((OuterJoinLoadable)factory.getEntityPersister(implementors[0]),
factory, c, implementors[0], s.getEnabledFilters());

Field f = OuterJoinLoader.class.getDeclaredField("sql");
f.setAccessible(true);
String sql = (String)f.get(loader);

希望对您有所帮助。

关于java - 将 Hibernate 查询存储在变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30449249/

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