首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >hbm.xml文件中某些错误

hbm.xml文件中某些错误
EN

Stack Overflow用户
提问于 2014-08-26 13:13:17
回答 2查看 13.5K关注 0票数 2

我是第一次接触hibernte。我正在尝试使用hibernate从oracle表中检索简单的记录。

我的实体类被命名为pojo1,pojo1.hbm.xml如下所示:

代码语言:javascript
复制
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

<hibernate-mapping package="hibernate" default-lazy="true">

<class name="pojo1" table="QUOTE_MESSAGE_TRANSLATION_BKP">
<meta attribute="class-description">
</meta>
<property name="id" column="TRANSLATION_ID" type="java.lang.Integer"/>
<property name="commitCode" column="COMMIT_CODE" type="java.lang.Integer"/>
</class>
</hibernate-mapping>

在运行包含所有事务代码的app类时,我收到以下错误:

代码语言:javascript
复制
... ...
INFO: HHH000221: Reading mappings from resource: pojo1.hbm.xml
Aug 26, 2014 10:32:28 AM org.hibernate.internal.util.xml.ErrorLogger logErrors
ERROR: HHH000196: Error parsing XML (3) : The content of element type "class" must     match "(meta*,subselect?,cache?,synchronize*,comment?,tuplizer*,(id|composite-    id),discriminator?,natural-id?,(version|timestamp)?,(property|many-to-one|one-to-one|component|dynamic-component|properties|any|map|set|list|bag|idbag|array|primitive-array)*,((join*,subclass*)|joined-subclass*|union-subclass*),loader?,sql-insert?,sql-update?,sql-delete?,filter*,fetch-profile*,resultset*,(query|sql-query)*)".
Aug 26, 2014 10:32:28 AM org.hibernate.internal.util.xml.ErrorLogger logErrors
ERROR: HHH000196: Error parsing XML (3) : The content of element type "class" must match "(meta*,subselect?,cache?,synchronize*,comment?,tuplizer*,(id|composite-id),discriminator?,natural-id?,(version|timestamp)?,(property|many-to-one|one-to-one|component|dynamic-component|properties|any|map|set|list|bag|idbag|array|primitive-array)*,((join*,subclass*)|joined-subclass*|union-subclass*),loader?,sql-insert?,sql-update?,sql-delete?,filter*,fetch-profile*,resultset*,(query|sql-query)*)".
Failed to create sessionFactory object.org.hibernate.InvalidMappingException: Unable to read XML
Exception in thread "main" java.lang.ExceptionInInitializerError
at hibernate.app.main(app.java:20)
Caused by: org.hibernate.InvalidMappingException: Unable to read XML
at org.hibernate.internal.util.xml.MappingReader.legacyReadMappingDocument(MappingReader.java:375)
at org.hibernate.internal.util.xml.MappingReader.readMappingDocument(MappingReader.java:304)
at org.hibernate.cfg.Configuration.add(Configuration.java:516)
at org.hibernate.cfg.Configuration.add(Configuration.java:512)
at org.hibernate.cfg.Configuration.add(Configuration.java:686)
at org.hibernate.cfg.Configuration.addResource(Configuration.java:769)
at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:2255)
at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:2227)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2207)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2160)
at org.hibernate.cfg.Configuration.configure(Configuration.java:2075)
at org.hibernate.cfg.Configuration.configure(Configuration.java:2054)
at hibernate.app.main(app.java:17)
Caused by: org.xml.sax.SAXParseException; lineNumber: 13; columnNumber: 12; The content of element type "class" must match "(meta*,subselect?,cache?,synchronize*,comment?,tuplizer*,(id|composite-id),discriminator?,natural-id?,(version|timestamp)?,(property|many-to-one|one-to-one|component|dynamic-component|properties|any|map|set|list|bag|idbag|array|primitive-array)*,((join*,subclass*)|joined-subclass*|union-subclass*),loader?,sql-insert?,sql-update?,sql-delete?,filter*,fetch-profile*,resultset*,(query|sql-query)*)".
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198)
at .... ....

请帮帮忙。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-26 13:16:57

<class>元素中需要一个<id><composite-id>元素。

请参阅文档here

映射类必须声明数据库表的主键列。

票数 2
EN

Stack Overflow用户

发布于 2014-08-26 13:24:45

您必须使用<id>标记为实体类声明一个id

因此,请更改以下内容:

代码语言:javascript
复制
<property name="id" column="TRANSLATION_ID" type="java.lang.Integer"/>

要这样做:

代码语言:javascript
复制
<id name="id" column="TRANSLATION_ID" type="int"></id>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25498490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档