【问题标题】:Unable to instantiate default tuplizer Exception无法实例化默认 tuplizer 异常
【发布时间】:2019-12-23 02:02:11
【问题描述】:

最近我将休眠从 3.1 更新到 4.3,我尝试使用注释而不是 xml。使用 Xml 一切正常,注释引发了一堆异常。我坚持的最后一个是下面的堆栈跟踪请阐明它。我非常需要帮助,因为堆栈跟踪没有给我任何特定的工作区域。 我在用 休眠 4.3 javaassist 3.18

我尝试使用每个人都建议的 javaassist jar,但这对我没有帮助。但是我有疑问,buildSessionFactory 在 hibernate 4.5 中已被弃用,这是否是罪魁祸首? 如果有任何帮助,只需包括我的 HibernateUtils

                connProperties.setProperty( "hibernate.connection.datasource", "java:comp/env/" + MASTER_JDBC_RESOURCE_NAME );
                configuration = new Configuration();
                configuration.addProperties(connProperties);
                sessionFactory = configuration.configure().buildSessionFactory();
                Properties hibernateProperties = configuration.getProperties();
                for (Object k : hibernateProperties.keySet()) {
                    System.out.println("Hibernate Key "+k.toString());
                }
                String testCon = hibernateProperties.getProperty("hibernate.test_connections");
                testConnections = StringUtils.stringToBool(testCon);

我的堆栈跟踪

org.hibernate.HibernateException:无法实例化默认 tuplizer [org.hibernate.tuple.component.PojoComponentTuplizer] 在 org.hibernate.tuple.component.ComponentTuplizerFactory.constructTuplizer(ComponentTuplizerFactory.java:101) 在 org.hibernate.tuple.component.ComponentTuplizerFactory.constructDefaultTuplizer(ComponentTuplizerFactory.java:122) 在 org.hibernate.tuple.component.ComponentMetamodel.(ComponentMetamodel.java:81) 在 org.hibernate.mapping.Component.getType(Component.java:180) 在 org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:322) 在 org.hibernate.mapping.RootClass.validate(RootClass.java:271) 在 org.hibernate.cfg.Configuration.validate(Configuration.java:1360) 在 org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1851) 在 org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1930) 在 wadetech.DB.base.HibernateUtils.(HibernateUtils.java:111) 在 wadetech.DB.base.BaseDAO.(BaseDAO.java:43) 在 wadetech.DB.DAOS.__MaintenanceDAO.(__MaintenanceDAO.java:10) 在 com.at.project.utils.runtime.RuntimeModifier.HasExecuted(RuntimeModifier.java:127) 在 wadetech.listeners.ModificationScriptStartupListener.contextInitialized (ModificationScriptStartupListener.java:47) 在 org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5016) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5528) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575) 在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565) 在 java.util.concurrent.FutureTask.run(FutureTask.java:262) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:745) 引起:java.lang.reflect.InvocationTargetException 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:526) 在 org.hibernate.tuple.component.ComponentTuplizerFactory.constructTuplizer(ComponentTuplizerFactory.java:98) ... 22 更多 原因:org.hibernate.PropertyNotFoundException:在类 java.lang.String 中找不到属性字节的设置器 在 org.hibernate.property.BasicPropertyAccessor.createSetter(BasicPropertyAccessor.java:246) 在 org.hibernate.property.BasicPropertyAccessor.getSetter(BasicPropertyAccessor.java:240) 在 org.hibernate.mapping.Property.getSetter(Property.java:328) 在 org.hibernate.tuple.component.PojoComponentTuplizer.buildSetter(PojoComponentTuplizer.java:159) 在 org.hibernate.tuple.component.AbstractComponentTuplizer.(AbstractComponentTuplizer.java:65) 在 org.hibernate.tuple.component.PojoComponentTuplizer.(PojoComponentTuplizer.java:59) ... 27 更多

感谢您的帮助

【问题讨论】:

  • 我尝试将 buildSessionFactory 与 ServiceRegistry 一起使用,但仍然无法正常工作。
  • 这个异常与 buildsessionfactory 没有任何关系但是罪魁祸首是表数据。

标签: java hibernate exception annotations mapping


【解决方案1】:

我在谷歌上搜索了一个解决方案,不幸的是,大多数为其他人解决的答案都对我有帮助。下面提到了几个投票最多的答案:

  1. 使用 javaassist.jar 并确保在使用时它与您的休眠版本兼容。对于休眠 4.3.11,javaassist 3.18 可以。
  2. 确保为所有属性定义匹配的 getter/setter。

我的案例与案例 2 类似,因此如果有人遇到这些错误并且案例 1 对您有所帮助,您唯一能做的就是全面检查您的实体类并将其与表和列名称进行比较。对我来说,我的任务是将映射从 XML 移动到注释,并且由于这种迁移而面临问题的任何人都需要使用相应的 .hbm.xml 文件交叉检查他们的实体类。

【讨论】:

    猜你喜欢
    • 2012-02-12
    • 2019-11-23
    • 2013-04-02
    • 2019-03-11
    • 1970-01-01
    • 2013-12-07
    • 2020-09-05
    • 1970-01-01
    相关资源
    最近更新 更多