【发布时间】:2015-01-21 09:13:33
【问题描述】:
我想调用下一条语句:
public List<User> getList(int master_id) {
Session session = sessionFactory.getCurrentSession();
try {
List<User> result = (List<User>) sessionFactory.getCurrentSession()
.createQuery("from User WHERE master_id=:master_id")
.setInteger("master_id", master_id).list();
return result;
} finally {
session.close();
}
}
然后我抓住了
没有 Hibernate Session 绑定到线程,并且配置不允许 在这里创建非事务性的
有人说我必须为此添加@Transactional 注释,但正如您所见,没有必要这样做,因为它是SELECT 查询。做什么?
hibernate.cfg:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<mapping class="ru.tenet.smsc.domain.User" />
<mapping class="ru.tenet.smsc.domain.UserRoles" />
<mapping class="ru.tenet.smsc.domain.WhiteList" />
<mapping class="ru.tenet.smsc.domain.BlackList" />
<mapping class="ru.tenet.smsc.domain.Distribution" />
<mapping class="ru.tenet.smsc.domain.Range" />
<mapping class="ru.tenet.smsc.domain.SmsEntity" />
<mapping class="ru.tenet.smsc.domain.Archive" />
<mapping class="ru.tenet.smsc.domain.Priority" />
</session-factory>
</hibernate-configuration>
会话工厂:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation">
<value>/WEB-INF/db/hibernate.cfg.xml</value>
</property>
<property name="configurationClass">
<value>org.hibernate.cfg.AnnotationConfiguration</value>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.dialect"> org.hibernate.dialect.OracleDialect</prop>
<prop key="hibernate.connection.useUnicode">true</prop>
<prop key="hibernate.connection.characterEncoding">UTF-8</prop>
<prop key="hibernate.connection.charSet">UTF-8</prop>
</props>
</property>
</bean>
【问题讨论】:
-
您可以粘贴以下来源:hibernate.cfg 和 sessionFactory 吗?