簡體   English   中英

在Criteria休眠字符串中獲取特定值

[英]Get a specific value in Criteria hibernate String

我需要在標准字符串中提取一些值。 概念是獲取真實的SQL語句及其參數(無日志)

目前,我使用它來獲得Select:

CriteriaImpl c = (CriteriaImpl) criteria;
       SessionImpl s = (SessionImpl)c.getSession();
       SessionFactoryImplementor factory = s.getFactory();
       CriteriaQueryTranslator translator=new CriteriaQueryTranslator(factory,c,c.getEntityOrClassName(),CriteriaQueryTranslator.ROOT_SQL_ALIAS);
       String[] implementors = factory.getImplementors( c.getEntityOrClassName() );

       CriteriaJoinWalker walker = new CriteriaJoinWalker((OuterJoinLoadable)factory.getEntityPersister(implementors[0]), 
                               translator,
                               factory, 
                               c, 
                               c.getEntityOrClassName(), 
                               s.getLoadQueryInfluencers());


       String sql=walker.getSQLString();

結果:

select this_.ID_ELEMENTO as ID1_72_32_, this_2_.ACTIVO as[....]where this_2_.FECHA_BAJA is null and this_2_.ID_TIPO_ELEMENTO=? and this_2_.ACTIVO=? order by this_.ID_ELEMENTO asc

獲取參數的最接近的方法:

CriteriaQueryTranslator subCriteria= new CriteriaQueryTranslator(factory, c, c.getEntityOrClassName(), CriteriaQueryTranslator.ROOT_SQL_ALIAS);


       String root =subCriteria.getRootCriteria().toString();

結果:

CriteriaImpl(com.itym.pojo.elementos.antenas.AntenaAnalogicaPojo:elemento[Subcriteria(tipoElemento:tipoElemento)][fechaBaja is null, tipoElemento=ANTENA, activo=true])

我需要“ TipoElemento”和“ activo”值來替換第一個字符串。

我嘗試了定期表達,但沒有離開我。

如果有人知道如何或以其他方式獲得真正的選擇,將不勝感激!

我認為這就是您想要的,如果不是,請更正我:這兩個正則表達式都可以使用兩個值

/tipoElemento=([A-Za-z]*).*activo=([A-Za-z]*)/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM