下面列出了org.hibernate.criterion.Subqueries#org.hibernate.criterion.Property 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public long getCurrentNumberOfApis(int envId,String componentIdsStrg) throws ParseException {
List<Integer> comIdList = DaoUtil.convertCSVToList(componentIdsStrg);
Session session = sessionFactory.openSession();
DetachedCriteria subMaxDate = DetachedCriteria.forClass(ApiStatusEntity.class);
subMaxDate.setProjection(Projections.max("statusDate"));
Criteria crtCurrenrApi = session.createCriteria(ApiStatusEntity.class);
crtCurrenrApi.add(Property.forName("statusDate").eq(subMaxDate));
DaoUtil.addEnvironmentToCriteria(envId, comIdList, crtCurrenrApi);
crtCurrenrApi.setProjection(Projections.sum("totalApi"));
long currentNumberOfApi = (long) (crtCurrenrApi.uniqueResult() == null ? (long)0 : crtCurrenrApi.uniqueResult());
session.close();
return currentNumberOfApi;
}
@Override
public long getCurrentNumberOfApis(int envId,String componentIdsStrg) throws ParseException {
List<Integer> comIdList = DaoUtil.convertCSVToList(componentIdsStrg);
Session session = sessionFactory.openSession();
DetachedCriteria subMaxDate = DetachedCriteria.forClass(K8sApiStatusEntity.class);
subMaxDate.setProjection(Projections.max("statusDate"));
Criteria crtCurrenrApi = session.createCriteria(K8sApiStatusEntity.class);
crtCurrenrApi.add(Property.forName("statusDate").eq(subMaxDate));
DaoUtil.addEnvironmentToCriteria(envId, comIdList, crtCurrenrApi);
crtCurrenrApi.setProjection(Projections.sum("totalApi"));
long currentNumberOfApi = (long) (crtCurrenrApi.uniqueResult() == null ? (long)0 : crtCurrenrApi.uniqueResult());
session.close();
return currentNumberOfApi;
}
@Override
public List<String> listPlaceholderByMeasures(final List<String> measures) {
List<SbiKpiPlaceholder> lst = list(new ICriterion<SbiKpiPlaceholder>() {
@Override
public Criteria evaluate(Session session) {
DetachedCriteria detachedCriteria = DetachedCriteria.forClass(SbiKpiRuleOutput.class).createAlias("sbiKpiRule", "sbiKpiRule")
.createAlias("sbiKpiAlias", "sbiKpiAlias").setProjection(Property.forName("sbiKpiRule.sbiKpiRuleId.id"))
.add(Restrictions.eq("sbiKpiRule.active", 'T')).add(Restrictions.in("sbiKpiAlias.name", measures));
Criteria c = session.createCriteria(SbiKpiRule.class).createAlias("sbiKpiPlaceholders", "sbiKpiPlaceholders")
.add(Property.forName("sbiKpiRuleId.id").in(detachedCriteria)).add(Restrictions.eq("active", 'T'))
.setProjection(Projections.distinct(Projections.property("sbiKpiPlaceholders.name").as("name")))
.setResultTransformer(Transformers.aliasToBean(SbiKpiPlaceholder.class));
return c;
}
});
List<String> placeholdername = new ArrayList<>();
for (SbiKpiPlaceholder sbiKpiPlaceholder : lst) {
placeholdername.add(sbiKpiPlaceholder.getName());
}
return placeholdername;
}
private SbiKpiExecutionFilter from(SchedulerFilter schedulerFilter, SbiKpiExecutionFilter sbiFilter, Session session) {
Integer placeholderId = null;
if (schedulerFilter.getPlaceholderId() != null) {
placeholderId = schedulerFilter.getPlaceholderId();
} else if (schedulerFilter.getPlaceholderName() != null) {
placeholderId = (Integer) session.createCriteria(SbiKpiPlaceholder.class).add(Restrictions.eq("name", schedulerFilter.getPlaceholderName()))
.setProjection(Property.forName("id")).uniqueResult();
}
if (sbiFilter == null) {
sbiFilter = new SbiKpiExecutionFilter();
SbiKpiExecutionFilterId id = new SbiKpiExecutionFilterId(placeholderId, schedulerFilter.getExecutionId(), schedulerFilter.getKpiId(),
schedulerFilter.getKpiVersion());
sbiFilter.setSbiKpiExecutionFilterId(id);
updateSbiCommonInfo4Insert(sbiFilter);
} else {
updateSbiCommonInfo4Update(sbiFilter);
}
sbiFilter.setValue(schedulerFilter.getValue());
sbiFilter.setTypeId(schedulerFilter.getType().getValueId());
return sbiFilter;
}
public void afterConfigurationBuilt(Mappings mappings, Dialect dialect) {
super.afterConfigurationBuilt( mappings, dialect );
// Oracle and Postgres do not have year() functions, so we need to
// redefine the 'User.person.yob' formula
//
// consider temporary until we add the capability to define
// mapping foprmulas which can use dialect-registered functions...
PersistentClass user = mappings.getClass( User.class.getName() );
org.hibernate.mapping.Property personProperty = user.getProperty( "person" );
Component component = ( Component ) personProperty.getValue();
Formula f = ( Formula ) component.getProperty( "yob" ).getValue().getColumnIterator().next();
SQLFunction yearFunction = ( SQLFunction ) dialect.getFunctions().get( "year" );
if ( yearFunction == null ) {
// the dialect not know to support a year() function, so rely on the
// ANSI SQL extract function
f.setFormula( "extract( year from dob )");
}
else {
List args = new ArrayList();
args.add( "dob" );
f.setFormula( yearFunction.render( args, null ) );
}
}
public void testComponentFormulaQuery() {
Session s = openSession();
Transaction t = s.beginTransaction();
s.createQuery("from User u where u.person.yob = 1999").list();
s.createCriteria(User.class)
.add( Property.forName("person.yob").between( new Integer(1999), new Integer(2002) ) )
.list();
if ( getDialect().supportsRowValueConstructorSyntax() ) {
s.createQuery("from User u where u.person = ('gavin', :dob, 'Peachtree Rd', 'Karbarook Ave', 1974, 'Peachtree Rd')")
.setDate("dob", new Date("March 25, 1974")).list();
s.createQuery("from User where person = ('gavin', :dob, 'Peachtree Rd', 'Karbarook Ave', 1974, 'Peachtree Rd')")
.setDate("dob", new Date("March 25, 1974")).list();
}
t.commit();
s.close();
}
/**
* 获取 除当前 角色之外的用户信息列表
*
* @param request
* request
* @return 处理结果信息
*/
@RequestMapping(params = "addUserToRoleList")
public void addUserToOrgList(TSUser user, HttpServletRequest request, HttpServletResponse response,
DataGrid dataGrid) {
String roleId = request.getParameter("roleId");
CriteriaQuery cq = new CriteriaQuery(TSUser.class, dataGrid);
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, user);
// 获取 当前组织机构的用户信息
CriteriaQuery subCq = new CriteriaQuery(InterroleUserEntity.class);
subCq.setProjection(Property.forName("TSUser.id"));
subCq.eq("interroleEntity.id", roleId);
subCq.add();
cq.eq("userType", "2");
cq.add(Property.forName("id").notIn(subCq.getDetachedCriteria()));
cq.add();
this.systemService.getDataGridReturn(cq, true);
TagUtil.datagrid(response, dataGrid);
}
/**
* 获取 除当前 组织之外的用户信息列表
* @param request request
* @return 处理结果信息
*/
@RequestMapping(params = "addUserToOrgList")
public void addUserToOrgList(TSUser user, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
String orgId = request.getParameter("orgId");
CriteriaQuery cq = new CriteriaQuery(TSUser.class, dataGrid);
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, user);
// 获取 当前组织机构的用户信息
CriteriaQuery subCq = new CriteriaQuery(TSUserOrg.class);
subCq.setProjection(Property.forName("tsUser.id"));
subCq.eq("tsDepart.id", orgId);
subCq.add();
cq.add(Property.forName("id").notIn(subCq.getDetachedCriteria()));
cq.add();
this.systemService.getDataGridReturn(cq, true);
TagUtil.datagrid(response, dataGrid);
}
/**
* 获取 除当前 组织之外的用户信息列表
* @param request request
* @return 处理结果信息
*/
@RequestMapping(params = "addUserToOrgList")
public void addUserToOrgList(TSUser user, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
String orgId = request.getParameter("orgId");
CriteriaQuery cq = new CriteriaQuery(TSUser.class, dataGrid);
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, user);
// 获取 当前组织机构的用户信息
CriteriaQuery subCq = new CriteriaQuery(TSUserOrg.class);
subCq.setProjection(Property.forName("tsUser.id"));
subCq.eq("tsDepart.id", orgId);
subCq.add();
cq.add(Property.forName("id").notIn(subCq.getDetachedCriteria()));
cq.eq("deleteFlag", Globals.Delete_Normal);//删除状态,不删除
cq.eq("userType",Globals.USER_TYPE_SYSTEM);//系统用户
cq.add();
this.systemService.getDataGridReturn(cq, true);
TagUtil.datagrid(response, dataGrid);
}
/**
* 获取 除当前 角色之外的用户信息列表
* @param request request
* @return 处理结果信息
*/
@RequestMapping(params = "addUserToRoleList")
public void addUserToOrgList(TSUser user, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
String roleId = request.getParameter("roleId");
CriteriaQuery cq = new CriteriaQuery(TSUser.class, dataGrid);
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, user);
// 获取 当前组织机构的用户信息
CriteriaQuery subCq = new CriteriaQuery(TSRoleUser.class);
subCq.setProjection(Property.forName("TSUser.id"));
subCq.eq("TSRole.id", roleId);
subCq.add();
cq.add(Property.forName("id").notIn(subCq.getDetachedCriteria()));
cq.eq("deleteFlag", Globals.Delete_Normal);//删除状态,不删除
cq.eq("userType",Globals.USER_TYPE_SYSTEM);//系统用户
cq.add();
this.systemService.getDataGridReturn(cq, true);
TagUtil.datagrid(response, dataGrid);
}
public static void addEnvironmentToCriteria(int envId, List<Integer> compIds, Criteria criteria) {
criteria.createCriteria("environment", "environment");
if(envId != 0){
criteria.add(Restrictions.eq("environment.environmentId", envId));
}
criteria.add(Restrictions.eq("environment.envLock", 0));
if(compIds.size() > 0){
criteria.add(Property.forName("component.componentId").in(compIds));
}
}
private static <T extends StateRevision> Optional<T> latestRevision(
Class<T> revisionType, String field, Object bean) {
DetachedCriteria maxQuery = DetachedCriteria.forClass(revisionType)
.add(Restrictions.eq(field, bean))
.setProjection(Projections.max("id"));
T revision = (T) getSession()
.createCriteria(revisionType)
.add(Restrictions.eq(field, bean))
.add(Property.forName("id").eq(maxQuery))
.uniqueResult();
return Optional.ofNullable(revision);
}
/**
* Get the Meta Model Categories associated to a role
*
* @see it.eng.spagobi.commons.dao.IRoleDAO#getMetaModelCategoryForRole(java.lang.Integer)
*/
@Override
public List<Integer> getMetaModelCategoriesForRoles(final Collection<String> roles) throws EMFUserError {
return executeOnTransaction(new IExecuteOnTransaction<List<Integer>>() {
@Override
public List<Integer> execute(Session session) throws Exception {
Criteria c = session.createCriteria(SbiExtRoles.class);
c.add(Restrictions.in("name", roles));
c.createAlias("sbiMetaModelCategories", "_sbiMetaModelCategories");
c.setProjection(Property.forName("_sbiMetaModelCategories.valueId"));
return c.list();
}
});
}
@Override
public void removeParametersByBiobjId(Integer biobjId, Session session) throws EMFUserError {
List<Integer> ids = session.createCriteria(SbiOutputParameter.class).add(Restrictions.eq("biobjId", biobjId)).setProjection(Property.forName("id"))
.list();
for (Integer id : ids) {
removeParameter(id, session);
}
}
@Override
public void removeUserDefinedParametersByBiobjId(Integer biobjId, Session session) throws EMFUserError {
List<Integer> ids = session.createCriteria(SbiOutputParameter.class).add(Restrictions.eq("biobjId", biobjId))
.add(Restrictions.eq("isUserDefined", true)).setProjection(Property.forName("id")).list();
for (Integer id : ids) {
removeParameter(id, session);
}
}
@Override
public void removeSystemDefinedParametersByBiobjId(Integer biobjId, Session session) throws EMFUserError {
List<Integer> ids = session.createCriteria(SbiOutputParameter.class).add(Restrictions.eq("biobjId", biobjId)).add(Restrictions.isNull("isUserDefined"))
.setProjection(Property.forName("id")).list();
// .add(Restrictions.eq("isUserDefined", false)).setProjection(Property.forName("id")).list();
for (Integer id : ids) {
removeParameter(id, session);
}
}
@Override
public List<String> listTriggerPausedByGroup(final String triggerGroup, final String jobGroup) {
return executeOnTransaction(new IExecuteOnTransaction<List<String>>() {
@Override
public List<String> execute(Session session) throws Exception {
List<String> suspendedTriggers = session.createCriteria(SbiTriggerPaused.class).add(Restrictions.eq("triggerGroup", triggerGroup))
.add(Restrictions.eq("jobGroup", jobGroup)).setProjection(Property.forName("triggerName")).list();
return suspendedTriggers;
}
});
}
@Override
public void removeRule(final Integer id, final Integer version, final boolean toBeVersioned) {
executeOnTransaction(new IExecuteOnTransaction<Boolean>() {
@Override
public Boolean execute(Session session) throws Exception {
SbiKpiRule rule = (SbiKpiRule) session.load(SbiKpiRule.class, new SbiKpiRuleId(id, version));
if (toBeVersioned && Character.valueOf('T').equals(rule.getActive())) {
rule.setActive(null);
} else {
// Deleting placeholders
for (SbiKpiPlaceholder sbiKpiPlaceholder : rule.getSbiKpiPlaceholders()) {
session.delete(sbiKpiPlaceholder);
}
// Deleting Rule
session.delete(rule);
session.flush();
// Deleting unused categories
DetachedCriteria usedCategories = DetachedCriteria.forClass(SbiKpiRuleOutput.class).createAlias("category", "category")
.add(Restrictions.isNotNull("category")).setProjection(Property.forName("category.valueId"));
List<SbiDomains> categoriesToDelete = session.createCriteria(SbiDomains.class).add(Restrictions.eq("domainCd", KPI_MEASURE_CATEGORY))
.add(Property.forName("valueId").notIn(usedCategories)).list();
for (SbiDomains cat : categoriesToDelete) {
session.delete(cat);
}
// Deleting unused aliases
DetachedCriteria usedAliases = DetachedCriteria.forClass(SbiKpiRuleOutput.class).createAlias("sbiKpiAlias", "sbiKpiAlias")
.setProjection(Property.forName("sbiKpiAlias.id"));
List<SbiKpiAlias> aliasesToDelete = session.createCriteria(SbiKpiAlias.class).add(Property.forName("id").notIn(usedAliases)).list();
for (SbiKpiAlias alias : aliasesToDelete) {
session.delete(alias);
}
}
return Boolean.TRUE;
}
});
}
@Override
public List<Alias> listAliasNotInMeasure(final Integer ruleId, final Integer ruleVersion) {
return executeOnTransaction(new IExecuteOnTransaction<List<Alias>>() {
@Override
public List<Alias> execute(Session session) throws Exception {
DetachedCriteria dc = DetachedCriteria.forClass(SbiKpiRuleOutput.class).createAlias("type", "_type").createAlias("sbiKpiRule", "_sbiKpiRule")
.createAlias("sbiKpiAlias", "_sbiKpiAlias").add(Restrictions.eq("_type.valueCd", MEASURE))
.add(Restrictions.eq("_sbiKpiRule.active", 'T')).setProjection(Property.forName("_sbiKpiAlias.id"));
// Retriving all aliases not used as measure
List<SbiKpiAlias> alias = session.createCriteria(SbiKpiAlias.class).add(Subqueries.propertyNotIn("id", dc)).list();
Set<SbiKpiAlias> sbiAlias = new HashSet<>(alias);
if (ruleId != null && ruleVersion != null) {
List<SbiKpiAlias> aliasesUsedByCurrentRule = session.createCriteria(SbiKpiAlias.class)
.createAlias("sbiKpiRuleOutputs", "_sbiKpiRuleOutputs").createAlias("_sbiKpiRuleOutputs.sbiKpiRule", "_sbiKpiRule")
.add(Restrictions.eq("_sbiKpiRule.sbiKpiRuleId.id", ruleId)).add(Restrictions.eq("_sbiKpiRule.sbiKpiRuleId.version", ruleVersion))
.list();
sbiAlias.addAll(aliasesUsedByCurrentRule);
}
List<Alias> ret = new ArrayList<>();
for (SbiKpiAlias sbiKpiAlias : sbiAlias) {
ret.add(new Alias(sbiKpiAlias.getId(), sbiKpiAlias.getName()));
}
return ret;
}
});
}
@Override
public List<Alias> listAliasInMeasure(final Integer ruleId, final Integer ruleVersion) {
return executeOnTransaction(new IExecuteOnTransaction<List<Alias>>() {
@Override
public List<Alias> execute(Session session) throws Exception {
DetachedCriteria dc = DetachedCriteria.forClass(SbiKpiRuleOutput.class).createAlias("type", "_type").createAlias("sbiKpiRule", "_sbiKpiRule")
.createAlias("sbiKpiAlias", "_sbiKpiAlias").add(Restrictions.eq("_type.valueCd", MEASURE))
.add(Restrictions.eq("_sbiKpiRule.active", 'T')).setProjection(Property.forName("_sbiKpiAlias.id"));
// Retriving all aliases not used as measure
List<SbiKpiAlias> alias = session.createCriteria(SbiKpiAlias.class).add(Subqueries.propertyIn("id", dc)).list();
Set<SbiKpiAlias> sbiAlias = new HashSet<>(alias);
if (ruleId != null && ruleVersion != null) {
List<SbiKpiAlias> aliasesUsedByCurrentRule = session.createCriteria(SbiKpiAlias.class)
.createAlias("sbiKpiRuleOutputs", "_sbiKpiRuleOutputs").createAlias("_sbiKpiRuleOutputs.sbiKpiRule", "_sbiKpiRule")
.add(Restrictions.eq("_sbiKpiRule.sbiKpiRuleId.id", ruleId)).add(Restrictions.eq("_sbiKpiRule.sbiKpiRuleId.version", ruleVersion))
.list();
sbiAlias.removeAll(aliasesUsedByCurrentRule);
}
List<Alias> ret = new ArrayList<>();
for (SbiKpiAlias sbiKpiAlias : sbiAlias) {
ret.add(new Alias(sbiKpiAlias.getId(), sbiKpiAlias.getName()));
}
return ret;
}
});
}
public void testQuerySubclassAttribute() {
Session s = openSession();
Transaction t = s.beginTransaction();
Person p = new Person();
p.setName("Emmanuel");
p.setSex('M');
s.persist(p);
Employee q = new Employee();
q.setName("Steve");
q.setSex('M');
q.setTitle("Mr");
q.setSalary( new BigDecimal(1000) );
s.persist(q);
List result = s.createQuery("from Person where salary > 100").list();
assertEquals( result.size(), 1 );
assertSame( result.get(0), q );
result = s.createQuery("from Person where salary > 100 or name like 'E%'").list();
assertEquals( result.size(), 2 );
result = s.createCriteria(Person.class)
.add( Property.forName("salary").gt( new BigDecimal(100) ) )
.list();
assertEquals( result.size(), 1 );
assertSame( result.get(0), q );
//TODO: make this work:
/*result = s.createQuery("select salary from Person where salary > 100").list();
assertEquals( result.size(), 1 );
assertEquals( result.get(0), new BigDecimal(1000) );*/
s.delete(p);
s.delete(q);
t.commit();
s.close();
}
public void testQuerySubclassAttribute() {
Session s = openSession();
Transaction t = s.beginTransaction();
Person p = new Person();
p.setName("Emmanuel");
p.setSex('M');
s.persist(p);
Employee q = new Employee();
q.setName("Steve");
q.setSex('M');
q.setTitle("Mr");
q.setSalary( new BigDecimal(1000) );
s.persist(q);
List result = s.createQuery("from Person where salary > 100").list();
assertEquals( result.size(), 1 );
assertSame( result.get(0), q );
result = s.createQuery("from Person where salary > 100 or name like 'E%'").list();
assertEquals( result.size(), 2 );
result = s.createCriteria(Person.class)
.add( Property.forName("salary").gt( new BigDecimal(100) ) )
.list();
assertEquals( result.size(), 1 );
assertSame( result.get(0), q );
//TODO: make this work:
/*result = s.createQuery("select salary from Person where salary > 100").list();
assertEquals( result.size(), 1 );
assertEquals( result.get(0), new BigDecimal(1000) );*/
s.delete(p);
s.delete(q);
t.commit();
s.close();
}
public void testClassProperty() {
Session s = openSession();
Transaction t = s.beginTransaction();
// HQL: from Animal a where a.mother.class = Reptile
Criteria c = s.createCriteria(Animal.class,"a")
.createAlias("mother","m")
.add( Property.forName("m.class").eq(Reptile.class) );
c.list();
t.rollback();
s.close();
}
public void testQuerySubclassAttribute() {
if ( getDialect() instanceof HSQLDialect ) {
return; // TODO : why??
}
Session s = openSession();
Transaction t = s.beginTransaction();
Person p = new Person();
p.setName("Emmanuel");
p.setSex('M');
s.persist(p);
Employee q = new Employee();
q.setName("Steve");
q.setSex('M');
q.setTitle("Mr");
q.setSalary( new BigDecimal(1000) );
s.persist(q);
List result = s.createQuery("from Person where salary > 100").list();
assertEquals( result.size(), 1 );
assertSame( result.get(0), q );
result = s.createQuery("from Person where salary > 100 or name like 'E%'").list();
assertEquals( result.size(), 2 );
result = s.createCriteria(Person.class)
.add( Property.forName("salary").gt( new BigDecimal(100) ) )
.list();
assertEquals( result.size(), 1 );
assertSame( result.get(0), q );
result = s.createQuery("select salary from Person where salary > 100").list();
assertEquals( result.size(), 1 );
assertEquals( ( (BigDecimal) result.get(0) ).intValue(), 1000 );
s.delete(p);
s.delete(q);
t.commit();
s.close();
}
@Override
public Project getByName(String name) {
final Criteria crit = sessionService.getSession().createCriteria(Project.class);
crit.add(Property.forName("name").eq(name));
Project project = ( Project ) crit.uniqueResult();
HibernateLazyInitializer.init(project);
return project;
}
@Override
public Repository getByUID(String repositoryUid) {
final Criteria crit = sessionService.getSession().createCriteria(Repository.class);
crit.add(Property.forName("uid").eq(repositoryUid));
Repository repository = ( Repository ) crit.uniqueResult();
HibernateLazyInitializer.init(repository);
return repository;
}
@Override
public Repository getByName(String projectName, String repositoryName) {
final Criteria crit = sessionService.getSession().createCriteria(Repository.class);
crit.add(Property.forName("name").eq(repositoryName));
crit.createAlias("project", "p");
crit.add(Restrictions.eq("p.name", projectName));
Repository repository = ( Repository ) crit.uniqueResult();
HibernateLazyInitializer.init(repository);
return repository;
}
@Override
public RepositoryType getTypeByName(String repositoryTypeName) {
final Criteria crit = sessionService.getSession().createCriteria(RepositoryType.class);
crit.add(Property.forName("name").eq(repositoryTypeName));
RepositoryType repositoryType = ( RepositoryType ) crit.uniqueResult();
HibernateLazyInitializer.init(repositoryType);
return repositoryType;
}
@Override
public SystemInfo getSystemInfo() {
final Criteria crit = sessionService.getSession().createCriteria(SystemInfo.class);
crit.add(Property.forName("id").eq(SYSTEM_INFO));
SystemInfo systemInfo = ( SystemInfo ) crit.uniqueResult();
// crit.addOrder(Order.desc("id"));
// List list = crit.list();
// SystemInfo systemInfo = null;
// if (list.size() > 0) {
// systemInfo = (SystemInfo) list.get(0);
// }
HibernateLazyInitializer.init(systemInfo);
return systemInfo;
}
@Override
public Runner getRunnerByName(String name) {
final Criteria crit = sessionService.getSession().createCriteria(Runner.class);
crit.add(Property.forName(NAME).eq(name));
Runner runner = ( Runner ) crit.uniqueResult();
HibernateLazyInitializer.init(runner);
return runner;
}