- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用相同的batchNumber调用下面的函数,它可以毫无问题地工作15次,并且可以毫无问题地从数据库中获取记录,但在16时,应用程序在查询时卡住。 list()行被调用。并且不会写入“查询后”(请参阅 System.out 行)它只是失去调试焦点并且不会给出任何异常。这个问题可能与 hql 无关,因为我在不同的 hql 之前见过这个问题,并且我使用了标准而不是 hql,并且我解决了这个问题。但是为此,当我在 criteria(setProjection...) 中使用“group by”时,它不会返回结果,因为 hibernate model(object) 仅返回一个列表。但我需要结果作为模型。
注:大约15次只是为了测试。这是一个网络应用程序,用户可以多次单击调用此函数的按钮来查看从数据库中获取的记录。
SiteAddressDaoImpl:
public class SiteAddressDaoImpl<T, Id extends Serializable> extends
GenericDaoHibernateImpl implements SiteAddressDao {
public List<SiteAddressModel> getSitesByBatch(String batchNumber) {
try {
List<SiteAddressModel> siteList;
MigrationPlanDao migrationPlanDao = ServiceFactory
.getO2SiteService().getMigrationPlanDao();
Query query = this.getSession().createQuery(
"from " + persistentClass.getName() + " where "
+ "siteType =:" + "type and siteName in "
+ "(select distinct exchange from "
+ migrationPlanDao.getPersistentClass().getName()
+ " where migrationBatchNumber =:" + "batchNumber"
+ ")");
query.setString("batchNumber", batchNumber);
query.setString("type", "LLU/ASN");
System.out.println("before query");
siteList = query.list();
System.out.println("after query");
return siteList;
} catch (Exception e) {
e.printStackTrace();
}
}
...
}
GenericDaoHibernateImpl:
public class GenericDaoHibernateImpl<T, Id extends Serializable> extends HibernateDaoSupport implements GenericDao<T, Id> {..........}
hibernate 属性
<!-- Hibernate SessionFactory Definition -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
depends-on="annotatedClassRegistrar">
<property name="dataSource" ref="dataSource"/>
<property name="annotatedClasses" ref="annotatedClassList"/>
<property name="hibernateProperties">
<props>
<prop key="c3p0.acquire_increment">1</prop>
<prop key="c3p0.idle_test_period">120</prop>
<prop key="c3p0.max_size">50</prop>
<prop key="c3p0.max_statements">0</prop>
<prop key="c3p0.min_size">20</prop>
<prop key="c3p0.timeout">0</prop>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
<prop key="hibernate.connection.autocommit">true</prop>
<prop key="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</prop>
</props>
</property>
</bean>
<!-- Spring Data Access Exception Translator Defintion -->
<bean id="jdbcExceptionTranslator" class="org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator">
<property name="dataSource" ref="dataSource"/>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="exceptionTranslator" ref="jdbcExceptionTranslator"/>
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- Hibernate Template Defintion -->
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"/>
<property name="jdbcExceptionTranslator" ref="jdbcExceptionTranslator"/>
</bean>
用于 daos 的 bean
<bean name="migrationPlanDao"
class="com.alcatel.lucent.tr.o2ccm.middleware.dao.impl.MigrationPlanDaoImpl">
<constructor-arg value="com.alcatel.lucent.tr.o2ccm.middleware.model.hibernate.MigrationPlanModel"/>
<property name="hibernateTemplate" ref="hibernateTemplate"/>
</bean>
<bean name="siteAddressDao" class="com.alcatel.lucent.tr.o2ccm.middleware.dao.impl.SiteAddressDaoImpl">
<constructor-arg value="com.alcatel.lucent.tr.o2ccm.middleware.model.hibernate.SiteAddressModel"/>
<property name="hibernateTemplate" ref="hibernateTemplate"/>
</bean>
我简单地制作了 hql
Query query = this.getSession().createQuery("from " + persistentClass.getName() + " where " + "siteName='siteName'");
它在第 16 次查询时不起作用。
我使用了 hql 的 criteria 实例,它与 hql 的工作相同。它有效有什么区别...
DetachedCriteria criteria = DetachedCriteria.forClass(persistentClass);
criteria.add(Property.forName("siteName").eq("siteName"));
siteList = getHibernateTemplate().findByCriteria(criteria);
hibernate 版本3.2.0.ga
更新:我添加了一些详细信息。
最佳答案
我通过HibernateCallBack
解决了这个问题。
请参阅评论以了解哪个实现有效或无效。特别是通过查看 findByHql()
和 findByHqlQuery()
函数,会更容易看出有什么区别。
findByHql()
是有效的实现。区别似乎在于 session ,因为在 getSitesByBatch()
函数中,当我调用 findByHqlQuery()
时,我正在通过 创建查询this.getSession
,但是当我调用 findByHql()
时,我不需要创建查询,因为该函数已经通过从 doInHibernate(Session) 获取的 session 创建了查询session)
函数的 Session
参数。直接调用 query.list()
也不起作用。
查看代码:
public class SiteAddressDaoImpl<T, Id extends Serializable> extends
GenericDaoHibernateImpl implements SiteAddressDao {
public List<SiteAddressModel> getSitesByBatch(String batchNumber) {
List<SiteAddressModel> siteList;
MigrationPlanDao migrationPlanDao = ServiceFactory.getO2SiteService()
.getMigrationPlanDao();
// working
String hql = "from " + persistentClass.getName() + " where "
+ "siteType ='LLU/ASN' and siteName in "
+ "(select distinct exchange from "
+ migrationPlanDao.getPersistentClass().getName()
+ " where migrationBatchNumber =" + "'" + batchNumber + "'"
+ ")";
siteList = findbyHQL(hql);
/*
* // notWorking Query query = this.getSession().createQuery("from " +
* persistentClass.getName() + " where " + "siteType =:" +
* "type and siteName in " + "(select distinct exchange from " +
* migrationPlanDao.getPersistentClass().getName() +
* " where migrationBatchNumber =:" + "batchNumber" + ")" );
*
* query.setString("batchNumber", batchNumber); query.setString("type",
* "LLU/ASN"); siteList = query.list();
*/
/*
* //working DetachedCriteria criteria =
* DetachedCriteria.forClass(persistentClass);
* criteria.add(Property.forName("siteName").eq("Barnet")); siteList =
* getHibernateTemplate().findByCriteria(criteria);
*/
/*
* //notWorking Query query = this.getSession().createQuery("from " +
* persistentClass.getName() + " where " + "siteName='Barnet'");
* siteList = findbyHQLQuery(query);
*/
/*
* //working String hql = "from " + getPersistentClass().getName() +
* " where " + "siteName='Barnet'" ; siteList = findbyHQL(hql);
*/
return siteList;
}
}
public class GenericDaoHibernateImpl<T, Id extends Serializable> extends
HibernateDaoSupport implements GenericDao<T, Id> {
public List<T> findbyHQL(final String hql) throws DaoException {
getHibernateTemplate().setAlwaysUseNewSession(true);
return getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
// String str = "from " + persistentClass.getName() + " o";
Query query = session.createQuery(hql);
List<T> list = query.list();
logger.debug("Find " + list.size() + " records.");
return list;
}
});
}
public List<T> findbyHQLQuery(final Query hqlQuery) throws DaoException {
getHibernateTemplate().setAlwaysUseNewSession(true);
return getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
List<T> list = hqlQuery.list();
logger.debug("Find " + list.size() + " records.");
return list;
}
});
}
}
关于java - 经过几次相同的 hql 查询后,应用程序卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6426706/
我有三张 table 。表 A 有选项名称(即颜色、尺寸)。表 B 有选项值名称(即蓝色、红色、黑色等)。表C通过将选项名称id和选项名称值id放在一起来建立关系。 我的查询需要显示值和选项的名称,而
在mysql中,如何计算一行中的非空单元格?我只想计算某些列之间的单元格,比如第 3-10 列之间的单元格。不是所有的列...同样,仅在该行中。 最佳答案 如果你想这样做,只能在 sql 中使用名称而
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 7 年前。 Improve this ques
我正在为版本7.6进行Elasticsearch查询 我的查询是这样的: { "query": { "bool": { "should": [ {
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 7 年前。 Improve this ques
是否可以编写一个查询来检查任一子查询(而不是一个子查询)是否正确? SELECT * FROM employees e WHERE NOT EXISTS (
我找到了很多关于我的问题的答案,但问题没有解决 我有表格,有数据,例如: Data 1 Data 2 Data 3
以下查询返回错误: 查询: SELECT Id, FirstName, LastName, OwnerId, PersonEmail FROM Account WHERE lower(PersonEm
以下查询返回错误: 查询: SELECT Id, FirstName, LastName, OwnerId, PersonEmail FROM Account WHERE lower(PersonEm
我从 EditText 中获取了 String 值。以及提交查询的按钮。 String sql=editQuery.getText().toString();// SELECT * FROM empl
我有一个或多或少有效的查询(关于结果),但处理大约需要 45 秒。这对于在 GUI 中呈现数据来说肯定太长了。 所以我的需求是找到一个更快/更高效的查询(几毫秒左右会很好)我的数据表大约有 3000
这是我第一次使用 Stack Overflow,所以我希望我以正确的方式提出这个问题。 我有 2 个 SQL 查询,我正在尝试比较和识别缺失值,尽管我无法将 NULL 字段添加到第二个查询中以识别缺失
什么是动态 SQL 查询?何时需要使用动态 SQL 查询?我使用的是 SQL Server 2005。 最佳答案 这里有几篇文章: Introduction to Dynamic SQL Dynami
include "mysql.php"; $query= "SELECT ID,name,displayname,established,summary,searchlink,im
我有一个查询要“转换”为 mysql。这是查询: select top 5 * from (select id, firstName, lastName, sum(fileSize) as To
通过我的研究,我发现至少从 EF 4.1 开始,EF 查询上的 .ToString() 方法将返回要运行的 SQL。事实上,这对我来说非常有用,使用 Entity Framework 5 和 6。 但
我在构造查询来执行以下操作时遇到问题: 按activity_type_id过滤联系人,仅显示最近事件具有所需activity_type_id或为NULL(无事件)的联系人 表格结构如下: 一个联系人可
如何让我输入数据库的信息在输入数据 5 分钟后自行更新? 假设我有一张 table : +--+--+-----+ |id|ip|count| +--+--+-----+ |
我正在尝试搜索正好是 4 位数字的 ID,我知道我需要使用 LENGTH() 字符串函数,但找不到如何使用它的示例。我正在尝试以下(和其他变体)但它们不起作用。 SELECT max(car_id)
我有一个在 mysql 上运行良好的 sql 查询(查询 + 连接): select sum(pa.price) from user u , purchase pu , pack pa where (
我是一名优秀的程序员,十分优秀!