我有以下用于Fluent NHibernate的SessionFactory.
我收到了错误
创建SessionFactory时使用了无效或不完整的配置.
具有InnerException
已添加具有相同键的项目.
这个问题只是偶尔发生,我的应用程序大多数情况下工作正常.
基于NHibernate:System.Argument异常:已添加具有相同键的项目我猜我的类不是线程安全的,这可以解释此错误的间歇性.
using System;
using NHibernate;
using NHibernate.Cache;
using NHibernate.Cfg;
using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
using WSS.Data.Domain;
namespace WSS.Data {
public static class SessionFactory {
private static ISessionFactory _factory = null;
private static ISessionFactory GetFactory() {
if (_factory == null) {
NHibernate.Cfg.Configuration config;
config = new NHibernate.Cfg.Configuration();
config.Configure();
if (config == null) {
throw new InvalidOperationException("NHibernate configuration is null.");
}
config.AddAssembly("WSS.Data");
_factory = config.BuildSessionFactory();
if (_factory == null) {
throw new InvalidOperationException("Call to …Run Code Online (Sandbox Code Playgroud) 如何使用java配置创建SessionFactory?
@Bean
public SessionFactory sessionFactory(){
AnnotationSessionFactoryBean sessionFactoryBean = new AnnotationSessionFactoryBean();
sessionFactoryBean.setConfigLocation(new ClassPathResource("hibernate.cfg.xml"));
return sessionFactoryBean.getObject();
}
Run Code Online (Sandbox Code Playgroud)
由于某种原因,这不起作用......它总是返回null.
我遇到了一个奇怪的情况,当我将它作为 Web 应用程序运行时,我定义的 sessionFactory 会自动连接到 DAO 类。
但是,当我尝试对这个 DAO 类进行单元测试时,spring 不会将 sessionFactory 自动装配到 DAO 类并抛出以下异常。
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'activityDAO': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.hibernate.SessionFactory com.adwitiya.vdb.data.activity.ActivityDAO.sessionFactory; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [org.hibernate.SessionFactory] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:287) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1106) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) at …Run Code Online (Sandbox Code Playgroud) 以前我使用以下代码来配置sessionFactory,但是在将我的hibernate版本从4.2.1.Final升级到4.3.4.Final后,我无法使用以下代码检索sessionFactory,因为不推荐使用ServiceRegistryBuilder().
我使用此链接创建它,但提供的函数没有返回任何东西,因此它遇到预编译错误.
private static SessionFactory configureSessionFactory() {
try {
Configuration configuration = new Configuration();
configuration.configure();
serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
return sessionFactory;
} catch (HibernateException e) {
System.out.append("** Exception in SessionFactory **");
e.printStackTrace();
}
return sessionFactory;
}
static {
try {
sessionFactory = configureSessionFactory();
} catch (Exception e) {
System.err.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
private HibernateUtil() {
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
public static Session getSession() throws HibernateException { …Run Code Online (Sandbox Code Playgroud) NHibernate新手(我的免责声明).我遇到了一篇关于MVC的类似且有趣的文章,但是,我对在通用Web应用程序中管理NHibernate会话的一般最佳实践更为好奇.
我遇到了Burrow项目,但我开始意识到似乎有几个不同的方向.我知道每次我需要触摸数据库时创建一个新的SessionFactory可能不符合我的最佳利益,所以我对社区管理会话的工作感兴趣.你用Burrow吗?你将SessionFactory包装成单例吗?
任何方向或见解总是非常感激.
我正在为我的应用程序使用Hibernate 3版本.
在浏览Hibernate的教程时,我发现SessionFactory应该只为应用程序创建一次.所以为此,我决定在类中使用静态块,并使用静态方法返回如图所示.
public class SessionFactoryInitiliaztion {
static {
try {
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (Exception x) {
x.printStackTrace();
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
Run Code Online (Sandbox Code Playgroud)
我究竟需要在哪里关闭这个sessionFactory对象,以便它重新调用内存?
我使用的是Spring 3.1.1.RELEASE,JUnit 4.8.1和Hibernate 4.1.5.Final.我正在尝试测试我的二级缓存是否配置正确,但我不确定如何做到这一点.我正在使用JPA实体管理器,在Spring中配置如此......
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="jpaDialect">
<bean class="org.collegeboard.springboard.core.jpa.HibernateJpaDialect">
<property name="flushMode" value="COMMIT"/>
</bean>
</property>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"/>
</property>
<property name="persistenceXmlLocation" value="classpath:META-INF/test-persistence.xml"/>
<property name="persistenceUnitName" value="orgTestingDatabase"/>
<property name="dataSource" ref="dataSource"/>
</bean>
<bean id="sharedEntityManager" class="org.springframework.orm.jpa.support.SharedEntityManagerBean">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
我已经配置了我的二级缓存...
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>
<property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
<!-- Collect stats, this is for testing if the cache is working -->
<property name="hibernate.generate_statistics">true</property>
Run Code Online (Sandbox Code Playgroud)
如何在给定javax.persistence.EntityManager的情况下访问org.hibernate.stat.Statistics对象?显然,我需要以某种方式访问SessionFactory,但我无法找出适当的强制转换系列.
谢谢, - 戴夫
我正在使用Spring Data和Hibernate编写DAL但是我遇到了一个IllegalArgumentException异常,它阻止了我的工作.
这是DALConf.java包含DataSource和持久性异常转换处理器配置的类
package my.dal.config;
import java.util.Properties;
import javax.annotation.Resource;
import javax.sql.DataSource;
import org.apache.commons.dbcp2.BasicDataSource;
import org.apache.commons.dbcp2.BasicDataSourceFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor;
@Configuration
@ComponentScan(basePackages = { "my.dal" })
@PropertySource("classpath:dbconnection.properties")
public class DALConfig {
private static final String PROPERTY_NAME_DATABASE_DRIVER = "db.driver";
private static final String PROPERTY_NAME_DATABASE_PASSWORD = "db.password";
private static final String PROPERTY_NAME_DATABASE_URL = "db.url";
private static final String PROPERTY_NAME_DATABASE_USERNAME = "db.username";
private static final String PROPERTY_NAME_POOL_INITIAL_SIZE = "pool.initialsize";
private static final String PROPERTY_NAME_POOL_MAX_IDLE …Run Code Online (Sandbox Code Playgroud) java hibernate sessionfactory illegalargumentexception spring-data
以上异常一直在抛出创建一个hibernate会话工厂.

在应用程序lib文件夹中有hibernate-jpa-2.1-api和javax.persistence.2.1.0.我可以在两个jar中看到NamedStoredProcedureQuery类.但我得到classnotfoundexception的运行时错误.有什么建议吗?
我正在使用Hibernate 5.2,只是想检查AvailableSettings 中是否有一个配置属性,我可以在构建 sessionFactory 时使用该属性将allowOutOfTransactionUpdateOperations设置为true。通过查看代码,可以使用 sessionFactoryBuilder.allowOutOfTransactionUpdateOperations(true); 进行设置;但问题是我们只能在Configuration类中获取sessionFactoryBuilder的引用。
但它没有提及AvailableSettings 是否有任何可用的内容。
有没有人尝试在构建 sessionFactory 时使用元数据或其他方式设置此属性?
请具体回答hibernate 5.2。
sessionfactory ×10
hibernate ×8
java ×5
spring ×3
c# ×1
junit ×1
nhibernate ×1
singleton ×1
spring-data ×1
unit-testing ×1