Tag: hibernate 5.x

UnknownEntityTypeException:无法找到persister(Hibernate 5.0)

在下面的代码中,当我尝试执行Main.java我得到exception: Exception in thread “main” org.hibernate.UnknownEntityTypeException: Unable to locate persister: com.np.vta.test.pojo.Users at org.hibernate.internal.SessionFactoryImpl.locateEntityPersister(SessionFactoryImpl.java:792) at org.hibernate.internal.SessionImpl.locateEntityPersister(SessionImpl.java:2637) at org.hibernate.internal.SessionImpl.access$2500(SessionImpl.java:164) at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.(SessionImpl.java:2575) at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.(SessionImpl.java:2562) at org.hibernate.internal.SessionImpl.byId(SessionImpl.java:1044) at org.hibernate.internal.SessionImpl.get(SessionImpl.java:955) at com.app.test.Main.main(Main.java:20) 但如果我取消注释cfg.addClass( Users.class ).addResource( “com/np/vta/test/pojo/Users.hbm.xml” ); 然后代码工作正常。 为什么不从hibernate.cfg.xml读取 ? 项目设置 的hibernate.cfg.xml com.mysql.jdbc.Driver root@123321 jdbc:mysql://192.168.1.90:3306/test root org.hibernate.dialect.MySQLDialect Users.hbm.xml Users.java package com.np.vta.test.pojo; import java.io.Serializable; public class Users implements Serializable { private […]

JPA with Hibernate 5:以编程方式创建EntityManagerFactory

这个问题具体是关于以编程方式创建由Hibernate 5支持的JPA EntityManagerFactory ,这意味着没有配置xml文件 而不使用Spring 。 此外,这个问题具体是关于使用Hibernate Interceptor创建EntityManagerFactory 。 我知道如何以我想要的方式创建一个Hibernate SessionFactory ,但我不想要一个Hibernate SessionFactory ,我想要一个由Hibernate SessionFactory支持的JPA EntityManagerFactory 。 给定一个EntityManagerFactory有一种获取底层SessionFactory ,但是如果你拥有的是SessionFactory并且你想要的只是一个EntityManagerFactory包装器,那么你似乎运气不好。 使用Hibernate版本4.2.2 Ejb3Configuration已被弃用,但似乎没有其他方法以编程方式创建EntityManagerFactory ,所以我做了类似这样的事情: @SuppressWarnings( “deprecation” ) EntityManagerFactory buildEntityManagerFactory( UnmodifiableMap properties, UnmodifiableCollection<Class> annotatedClasses, Interceptor interceptor ) { Ejb3Configuration cfg = new Ejb3Configuration(); for( Binding binding : properties ) cfg.setProperty( binding.key, binding.value ); for( Class annotatedClass : annotatedClasses […]

Hibernate 5 + HikariCP + MySQL

我使用Hibernate 5和MySQL数据库开始了一个项目。 在这个项目之前,我一直在使用Hibernate 4,PostgreSQL和C3P0连接池。 现在,我想用Hibernate 5来使用HikariCP,因为它看起来很有前途。 这是我的hibernate的IVY配置部分: <!DOCTYPE ivy-module [ ]> … 我的DAO看起来像这样: public class PtDao { private Logger logger = LoggerFactory.getLogger(PtDao.class); private static PtDao instance; private Configuration cfg; private static ServiceRegistry serviceRegistry; private SessionFactory factory; private Transaction tx; private static Session session; private PtDao(){ prepararConexionConHikariCP(); } private void prepararConexionConHikariCP(){ try{ cfg = new Configuration(); […]

如何将Hibernate NamingStrategy迁移到(隐式|物理)NamingStrategy? 文件在哪里?

在Hibernate 4.2 / 4.3( HHH-7079 )中, NamingStrategy已被标记为已弃用。 从Hibernate 5开始,现在它将附带两个替换(?)接口ImplictNamingStrategy和PhysicalNamingStrategy ( HHH-7078 ),并最终放弃了对旧NamingStrategy支持。 这就是为什么Spring即将推出的Hibernate5支持甚至已经删除了配置器namingStrategy()并支持implicitNamingStrategy()和physicalNamingStrategy() 。 到现在为止还挺好。 虽然在一些文件(即不完整的工作-5.0-migration-guide.md )和即将发布的Hibernate 5(截至今天)的发布说明中都有提及,但我没有找到具体的例子如何使用实际上这些。 也许我错过了一些东西,但是JavaDoc和问题都没有显示出这两种策略类型的任何证据。 此外,我已经有一个基于NamingStrategy策略:一个基于众所周知的自定义OracleNamingStrategy 。 虽然我对代码中的正确解决方案感兴趣(显然),但实际问题是获得有效的迁移文档和/或重构命名策略的概念。 还有关系: ImprovedNamingStrategy不再适用于Hibernate 5

从JPA 2.1带注释的实体类自动生成数据模式,无需数据库连接

两年前,我正在使用以下项目开展项目: spring4.0.3.RELEASE jpa 2.0 hibernate 4.2.7.Final java 1.6.X 这个项目有一个maven任务hibernate3-maven-plugin,它允许我们在没有任何数据库连接(MySQL)的情况下生成数据库模式。 现在我们正在升级这个项目: java 1.8 jpa 2.1 spring4.2.4.RELEASE hibernate 5.0.6.Final 据我所知,hibernate3-maven-plugin在JPA 2.1和hibernate> 4.3上不起作用。 我发现的所有解决方案都需要连接到数据库。 例如: 从JPA带注释的实体类中自动生成数据模式 。 有谁知道如何离线生成数据库模式? 我所拥有的是一个persistence.xml,列出了所有的Entity类。

在Hibernate 5中替换org.hibernate.Transactions.isActive()

我正在从hibernate 4.2.17迁移到5.0.7到目前为止工作正常,但似乎不推荐使用方法isActive 。 我不能再使用它了。 这是我的代码: public void starteTransaktion() { try { getMySession(); if(!hibernateSession.getTransaction().isActive()) { hibernateSession.beginTransaction(); } } catch (HibernateException e) { } } 我替换了所有其他方法,但我找不到替代方法…… 错误消息:方法isActive()未定义类型Transaction

SpringBoot 1.3.0支持hibernate 5吗?

我对SpringBoot(1.3.0)对Hibernate5的支持感到有些困惑。 该引用列出了对hibernate 4.3.11.Final的依赖,但它也列出了对SpringFramework 4.2.3的依赖,其中包括Hibernate5支持。 是否只需添加额外的Hibernate5依赖项来覆盖Boot bundle的内容? 有人可以为我澄清一下吗?

Spring Boot Hibernate 5忽略@Table和@Column

这让我很生气。 我正在实现Spring Social,它要求您拥有一个名为UserConnection的数据库表(而不是使用使用下划线分隔这两个单词的标准命名约定)。 所以在我天真的世界观中,我认为通过指定@Table(name=”UserConnection”)可以很容易地解决这个问题……但不,这太容易了。 注释被忽略,表被创建为user_connection ,然后导致Spring Social有一个合适的东西。 请告诉我有一些简单的方法告诉我的Spring Boot应用程序只是命名一个表(及其相应的列)以使用camel-case命名约定而不是标准约定。

使用Hibernate 5和Spring 4的编程SchemaExport / SchemaUpdate

使用Spring 4和Hibernate 4,我能够使用Reflection从当前环境中获取Hibernate Configuration对象,使用以下代码: @Autowired LocalContainerEntityManagerFactoryBean lcemfb; EntityManagerFactoryImpl emf = (EntityManagerFactoryImpl) lcemfb.getNativeEntityManagerFactory(); SessionFactoryImpl sf = emf.getSessionFactory(); SessionFactoryServiceRegistryImpl serviceRegistry = (SessionFactoryServiceRegistryImpl) sf.getServiceRegistry(); Configuration cfg = null; try { Field field = SessionFactoryServiceRegistryImpl.class.getDeclaredField(“configuration”); field.setAccessible(true); cfg = (Configuration) field.get(serviceRegistry); } catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) { e.printStackTrace(); } SchemaUpdate update = new SchemaUpdate(serviceRegistry, cfg); […]

Hibernate从4.3.x迁移到5.x,用于方法org.hibernate.cfg.Configuration.getClassMapping(className)

在Hibernate 4.3.x中,有一个类org.hibernate.cfg.Configuration getClassMapping(className)方法。 但是在Hibernate 5.x中,这个getClassMapping(className)方法已从Configuration类中删除。 Hibernate-5中的代码替换是什么? 请帮助解决此迁移问题。