0
我有以下類,我想在數據庫(Oracle)的用戶ID,密碼使用NHibernateNHibernate的映射子複合鍵
class User
{
long Id {get; set;}
IList<UserPassword> OldPasswords {get; set}
}
class UserPassword
{
long UserId {get; set;}
string Password {get; set;}
DateTime CreateDtm {get; set;}
}
在userPassword表來映射和CreateDtm是複合鍵(I但是不能改變這一點)
目前我的映射文件看起來像
<hibernate-mapping assembly="DomainEntities" namespace="DomainEntities.Models" xmlns="urn:nhibernate-mapping-2.2">
<class name="User" table="USERS" lazy="true" >
<id name="Id">
<column name="USER_ID" sql-type="NUMBER" not-null="true" unique="true"/>
<generator class="identity"/>
</id>
<bag name="OldPasswords" cascade="all" inverse="true">
<key column="USER_ID" not-null="true" />
<one-to-many class="UserPassword" />
</bag>
</class>
</hibernate-mapping>
<hibernate-mapping assembly="DomainEntities" namespace="DomainEntities.Models" xmlns="urn:nhibernate-mapping-2.2">
<class name="UserPassword" table="USER_PASSWORDS" lazy="true" >
<composite-id>
<key-property name="UserId" column="USER_ID" />
<key-property name="Password" column="OLD_PASSWORD" />
<key-property name="CreateDtm" column="CREATE_DATE" />
</composite-id>
</class>
</hibernate-mapping>
當用戶對象,它的加載查詢用戶的密碼正確,我不能添加或刪除一個新的密碼到列表中。
我已經嘗試添加User對象上的映射,但是當嘗試提交事務時,它在CreateDtm的無效數組索引上引發異常。我懷疑這是因爲組合鍵。
我是否在我的映射中缺少某些東西,或者這是一個無法完成的情景?
嘗試在關聯 –
上使用'inverse =「false」'爲什麼要將UserPassword映射爲實體?您可以簡單地將它映射爲用戶組件,然後組合ID消失 – Firo
我需要1-M關係 - 我沒有意識到我可以使用組件對此進行建模。 – AndrewK