1
を得る

hibernate.hbm.xmlファイルにバージョンタイムスタンプを属性とプログラムを実行しているの両方を使用する場合、私は例外を取得を使用しました。 version属性が削除された場合、プログラムは正常に動作しますが、両方を使用すると実行時エラーが発生します。両方のバージョンおよびタイムスタンプ、私はSAXParseExceptionの


hibernate.hbm.xmlファイル

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping> 
<class name="Product.Product" table="Product"> 
    <id name="productId" column="pId"> 
     <generator class="assigned"/> 
    </id> 
    <timestamp name="ts" column="dateTime" /> 
    <version name="v" column="version"/> 
    <property name="productName" column="pName" length="50"/> 
    <property name="productPrice" column="pPrice" /> 
</class> 
</hibernate-mapping> 

HibernateUtilのクラス

public class HibernateUtil { 

public static void main(String[] args) { 
    Configuration c = new Configuration(); 
    c.configure("hibernate.cfg.xml"); 
    SessionFactory factory = c.buildSessionFactory(); 
    Session session = factory.openSession(); 
    Product p = new Product(); 
    p.setProductId(1001); 
    p.setProductName("Sony"); 
    p.setProductPrice(2000); 
    Transaction tx = session.beginTransaction(); 
    session.save(p); 
    tx.commit(); 
    System.out.println("Object is create Success fully..."); 
    session.close(); 
    factory.close(); 
} 

}


エラー、あなたが言うように

Exception in thread "main" 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 Product.HibernateUtil.main(HibernateUtil.java:23) 

Caused by: org.xml.sax.SAXParseException; lineNumber: 12; columnNumber: 13; 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:203) 
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134) 
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:396) 
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327) 
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:284) 
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleEndElement(XMLDTDValidator.java:1994) 
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.endElement(XMLDTDValidator.java:879) 
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782) 
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2967) 
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602) 
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112) 
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505) 
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:841) 
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:770) 
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) 
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213) 
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643) 
at org.dom4j.io.SAXReader.read(SAXReader.java:465) 
at org.hibernate.internal.util.xml.MappingReader.legacyReadMappingDocument(MappingReader.java:325) 

答えて

2

、あなたはそれらの二つが排他的であることを意味(version|timestamp)?を見ることができ、エラーラインで両方versiontimestamp

を使用しています。 <class>の中で一度に1つしか使用できないことを申し訳ありません。

あなたはHibernate documentationで読むことができます:

Hibernateはバージョン情報、専用バージョン番号やタイムスタンプを格納するための2つの異なるメカニズムを提供します。

彼ら二人は、バージョンメカニズムを提供するために使用されている

、あなただけを使用するかを選択する必要があります。)

+0

AK.Sharma @ –

+0

..あなたにIGパスカル卿に感謝は、任意の有用なことではなかったですもっと? –

関連する問題