2009-10-26 23 views
0

你好人對不起,如果這個問題看起來愚蠢的你。 我有3個表貨幣(ID |名稱)語言(ID |名稱|說明)交易(ID |量| languageId | currencyid)休眠單向一對多。我有點困惑

所以我要插入事務,但確保它不會插入未知的語言或貨幣(這意味着它不應該插入到messagetemplate如果沒有現有的父語言和貨幣)

這裏是我的映射文件

<?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 package="com.myproject.model"> 
<class name="Transaction" table="transaction"> 
    <id name="id"> 
    <generator class="native"/> 
    </id> 
    <property column="amount" name="amount" type="String"/> 
    <many-to-one class="CurrencyImpl" column="currency" name="currency"/> 
    <many-to-one class="LanguageImpl" column="language" name="language"/> 
</class> 
</hibernate-mapping> 

<?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 package="com.myproject.model"> 
    <class name="Currency" table="currency"> 
    <id name="id"> 
    <generator class="native"/> 
    </id> 
    <property column="currency_name" name="name" type="String"/> 
    </class> 
</hibernate-mapping> 


<?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 package="com.myproject.model"> 
<class name="Language" table="language"> 
    <id name="id"> 
    <generator class="native"/> 
    </id> 
    <property column="language_name" name="name" type="String"/> 
    <property column="language_description" name="description" type="String"/> 
</class> 
</hibernate-mapping> 

這個當前映射它似乎不是這樣的情況。如何實現?非常感謝您的閱讀

+2

你能真正指出發生了什麼問題嗎?你遇到了什麼錯誤? – Jherico 2009-10-26 19:39:29

回答

1

你很多一對引用CurrencyImpl和LanguageImpl,但這些類沒有映射,只有(可能相應的)接口。我建議你首先創建和映射具體類,然後在試圖弄亂映射接口之前先完成這個工作。

+0

接口無法在Hibernate中映射(儘管映射超類);我猜測OP在發佈之前破壞了代碼。 – ChssPly76 2009-10-26 20:05:10

+0

我相信你可以映射接口,如果你正在使用動態代理,但在hibernate中使用接口是自動的邊緣情況,因此我建議他限制自己到具體的類。 – Jherico 2009-10-26 21:25:08