我试图用NHibernate映射两个对象
这是我的第一个对象“Asociado”由“Justificaciones”组成,旁边是“Justificacion”,它有一个组合键
public class Justificacion
{
private int _id; //(PK)
private Asociado _asociado;(FK)
public override bool Equals(object obj)
{
return base.Equals(obj);
}
public override int GetHashCode()
{
return base.GetHashCode();
}
public override string ToString()
{
return base.ToString();
}
public virtual int Id
{
get { return _id; }
set { _id = value; }
}
public virtual Asociado Asociado
{
get { return _asociado; }
set { _asociado = value; }
}
}
public class Asociado
{
private int _id;
private IList<Justificacion> _justificaciones;
public virtual int Id
{
get { return this._id; }
set { this._id = value; }
}
public virtual IList<Justificacion> Justificaciones
{
get { return _justificaciones; }
set { _justificaciones = value; }
}
}
这是我所做的映射,但是无法正常工作
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="Trascend.Bolet.ObjetosComunes"
namespace="Trascend.Bolet.ObjetosComunes.Entidades">
<class name="Justificacion" table="FAC_ASO_JUST">
<composite-id>
<key-property name="Id" column="CCARTA" type="int"></key-property>
<key-property name="Asociado" column="CASOCIADO" type="int"></key-property>
</composite-id>
<many-to-one name="Asociado" class="Asociado">
<column name="CASOCIADO"/>
</many-to-one>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="Trascend.Bolet.ObjetosComunes"
namespace="Trascend.Bolet.ObjetosComunes.Entidades">
<class name="Asociado" table="FAC_ASOCIADOS">
<id name="Id" column="CASOCIADO" />
<bag name="Justificaciones"
fetch="join"
inverse="true"
cascade="save-update">
<key>
<column name="CCARTA"/>
<column name="CASOCIADO"/>
</key>
<one-to-many class="Justificacion"/>
</bag>
</hibernate-mapping>
答案 0 :(得分:1)
我认为问题是列映射两次<id name="Id" column="CASOCIADO" />
和<column name="CASOCIADO"/>
将Justificacion映射为组件
<bag name="Justificaciones"
fetch="join"
inverse="true"
cascade="save-update">
<key column ="CASOCIADO"/>
<composite-element class="Justificacion">
<parent name="Asociado"/>
</composite-element>
</bag>
亲: - 您不再需要Justificacion
上的ID了
con: - 您必须始终在父Justificacion
上查询Asociado
,但这不应该是个问题