2015-07-10 37 views
0

我知道有下文,但我这个XML文件非常愚蠢的错误无法修复一样。我使用与Hibernate混合策略,我想只有一个子类作为表的策略,其余为joined.Here是XML。我知道这应该是愚蠢的,但我不是在XML映射我使用注释而我现在用XML HBMS结识元素类型的内容“加入”必须再选择匹配“(,评论,钥匙,(财产?|?多到一个|成分|

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 

<hibernate-mapping> 
    <class table="PAYMENT" name="parent.Payment"> 
     <id name="id" type="long" column="PAYMENT_ID"> 
      <generator class="native" /> 
     </id> 
     <discriminator column="PAYMENT_TYPE" type="string"/> 
     <property name="amount" column="AMOUNT" /> 
     <subclass discriminator-value="CREDIT" 
     name="child.CreditCardPayment"> 
      <join table="CREDIT_PAYMENT"> 
       <property name="creditCardType" column="CCTYPE" type="string"/> 
      </join> 
     </subclass> 
     <subclass name="child.CashPayment" discriminator-value="CASH"> 
      <join table="CASH_PAYMENT"> 
       <property name="cashType" column="CATYPE" type="string"/> 
      </join> 
     </subclass> 
     <subclass name="child.ChequePayment" discriminator-value="CHEQUE"> 
     </subclass> 
    </class> 
</hibernate-mapping> 

例外是这样的:

Caused by: org.xml.sax.SAXParseException; lineNumber: 16; columnNumber: 11; The content of element type "join" must match "(subselect?,comment?,key,(property|many-to-one|component|dynamic-component|any)*,sql-insert?,sql-update?,sql-delete?)". 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source) 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleEndElement(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.endElement(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) 

回答

0

尝试指定的<key column=" "/>column="PAYMENT_ID"如下:

<hibernate-mapping> 
    <class table="PAYMENT" name="parent.Payment"> 
     <id name="id" type="long" column="PAYMENT_ID"> 
      <generator class="native" /> 
     </id> 
     <discriminator column="PAYMENT_TYPE" type="string"/> 
     <property name="amount" column="AMOUNT"/> 
     <subclass discriminator-value="CREDIT" 
     name="child.CreditCardPayment"> 
      <join table="CREDIT_PAYMENT"> 
       <key column="PAYMENT_ID"/> 
       <property name="creditCardType" column="CCTYPE" type="string"/> 
      </join> 
     </subclass> 
     <subclass name="child.CashPayment" discriminator-value="CASH"> 
      <join table="CASH_PAYMENT"> 
       <key column="PAYMENT_ID"/> 
       <property name="cashType" column="CATYPE" type="string"/> 
      </join> 
     </subclass> 
     <subclass name="child.ChequePayment" discriminator-value="CHEQUE"> 
     </subclass> 
    </class> 
</hibernate-mapping> 
+0

最后一个我不想加入...我想有组合策略.. – Abhijeet

+0

更新了答案! – Arpit

相关问题