有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

线程“main”java中的Hibernate映射异常。lang.ExceptionInInitializerError由配置时的无效映射引起

我正在尝试通过internet找到的hibernate集合映射示例,在运行HibernateUtil java类时,我面临以下问题。但是,在编译类和pojo文件时没有遇到任何问题

Jul 12, 2017 8:42:02 PM 
org.hibernate.annotations.common.reflection.java.JavaReflectionManager<clinit>
INFO: HCANN000001: Hibernate Commons Annotations {4.0.4.Final}
Jul 12, 2017 8:42:02 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.3.1.Final}
Jul 12, 2017 8:42:02 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
Jul 12, 2017 8:42:02 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
Jul 12, 2017 8:42:02 PM org.hibernate.cfg.Configuration configure
INFO: HHH000043: Configuring from resource: /hibernate.cfg.xml
Jul 12, 2017 8:42:02 PM org.hibernate.cfg.ConfigurationgetConfigurationInputStream
INFO: HHH000040: Configuration resource: /hibernate.cfg.xml
Jul 12, 2017 8:42:02 PM org.hibernate.internal.util.xml.DTDEntityResolverresolveEntity
WARN: HHH000223: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
Jul 12, 2017 8:42:02 PM org.hibernate.cfg.Configuration addResource
INFO: HHH000221: Reading mappings from resource: PoJo/Employee.hbm.xml
Jul 12, 2017 8:42:02 PM org.hibernate.cfg.Configuration addResource
INFO: HHH000221: Reading mappings from resource: PoJo/Certificates.hbm.xml
Jul 12, 2017 8:42:02 PM org.hibernate.cfg.Configuration doConfigure
INFO: HHH000041: Configured SessionFactory: null
Jul 12, 2017 8:42:03 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderI pl configure
WARN: HHH000402: Using Hibernate built-in connection pool (not for production use!)
Jul 12, 2017 8:42:03 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderI pl buildCreator
INFO: HHH000401: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost:3306/empl]
Jul 12, 2017 8:42:03 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH000046: Connection properties: {user=root, password=****}
Jul 12, 2017 8:42:03 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH000006: Autocommit mode: false
Jul 12, 2017 8:42:03 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000115: Hibernate connection pool size: 20 (min=1)
Jul 12, 2017 8:42:03 PM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQL5Dialect
Initial SessionFactory creation failed.org.hibernate.InvalidMappingException: Could not parse mapping document from resource PoJo/Employee.hbm.xml
Exception in thread "main" java.lang.ExceptionInInitializerError
at HibSetMap.main(HibSetMap.java:27)
Caused by: org.hibernate.InvalidMappingException: Could not parse mapping document from resource PoJo/Employee.hbm.xml
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXml(Configuration.java:3764)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXmlQueue(Configuration.java:3753)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3741)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1410)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1844)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1928)
at HibSetMap.main(HibSetMap.java:23)
Caused by: org.hibernate.MappingException: column attribute may not be used together with <column> subelement
at org.hibernate.cfg.HbmBinder.bindColumns(HbmBinder.java:1117)
at org.hibernate.cfg.HbmBinder.bindColumnsOrFormula(HbmBinder.java:1627)
at org.hibernate.cfg.HbmBinder.bindSimpleValue(HbmBinder.java:1193)
at org.hibernate.cfg.HbmBinder.bindSimpleId(HbmBinder.java:443)
at org.hibernate.cfg.HbmBinder.bindRootPersistentClassCommonValues(HbmBinder.java:386)
at org.hibernate.cfg.HbmBinder.bindRootClass(HbmBinder.java:326)
at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:177)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXml(Configuration.java:3761)
... 6 more

这是我的员工。哈佛商学院。xml

<hibernate-mapping> <class name="PoJo.Employee" table="employee" catalog="empl" optimistic-lock="version"> <meta attribute="class-discription"> This class contains the employee details. </meta> <id name="id" type="int" column="id"> <column name="id" /> <generator class="native" /> </id> <set name="certificates" cascade="all"> <key column="employeeId"/> <one-to-many class="Certificates"/> </set> <property name="fname" type="string" column="fname"> <column name="fname" length="20" /> </property> <property name="lname" type="string" column="lname"> <column name="lname" length="20" /> </property> <property name="salary" type="int" column= "salary"> <column name="salary" /> </property> </class> </hibernate-mapping>

下面是我遇到问题的代码部分

public class HibSetMap {

private static SessionFactory sessionFactory;


public static void main(String[] args) {

try {
        // Create the SessionFactory from standard (hibernate.cfg.xml) 
        // config file.
        sessionFactory = new Configuration().configure().buildSessionFactory();
    } catch (Throwable ex) {
        // Log the exception. 
        System.err.println("Initial SessionFactory creation failed." + ex);
        throw new ExceptionInInitializerError(ex);
    }
    }

请帮忙


共 (1) 个答案

  1. # 1 楼答案

    您是否尝试删除子元素或attribute column=“salary(适用于所有财产)

    似乎你不能两者兼得