想知道是否有人能指出我正确的方向..
我目前在sqlserver数据库中有以下3个表
参数 参数标识 参数名称
的parameterValue ParameterValueId 的parameterValue
ParameterParameterValue 参数标识 ParameterValueId
我正试图在参数域对象也将获取所有ParameterValue对象的地方(我猜测参数与ParameterValue有一对多的关系,因为参数可以有多个值) )但我没有在哪里 - 我已经实现的msot是获取第一个值,而不是全部:(
如果有人愿意提供帮助或任何我可以发布一些代码和/或我正在使用的映射 - 一如既往,我们非常感谢任何帮助:)
参数映射
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
namespace="StockMarketAdvisorDatabaseAccess.Domain"
assembly="StockMarketAdvisorDatabaseAccess">
<class name="Parameter" table="Parameter">
<id name="ParameterId">
<column name="ParameterId" sql-type="int" not-null="true" />
<generator class="identity" />
</id>
<property name="ParameterName" />
<bag name="ParameterValues" table="ParameterParameterValue" cascade="none">
<key column="ParameterValueId" />
<one-to-many class="ParameterValue" />
</bag>
</class>
</hibernate-mapping>
ParameterValue的映射
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
namespace="StockMarketAdvisorDatabaseAccess.Domain"
assembly="StockMarketAdvisorDatabaseAccess">
<class name="ParameterValue" table="ParameterValue">
<id name="ParameterValueId">
<column name="ParameterValueId" sql-type="int" not-null="true" />
<generator class="identity" />
</id>
<property name="Value" column="ParameterValue"/>
</class>
</hibernate-mapping>
再次感谢,刚刚开始使用nHibernate,所以仍然试图解决大部分问题! :)
答案 0 :(得分:1)
你的问题是你描述了一件事(1-many),但你的表结构是另一种(很多)
如果每个参数需要多个值,那么您应该将表结构简化为:
参数
-------------
* ParameterId
参数名称
的parameterValue --------------------
* ParameterValueId
参数标识
的parameterValue
然后你的映射可以使用1-many映射:
<class name="Parameter" table="Parameter">
<id name="ParameterId">
<column name="ParameterId" sql-type="int" not-null="true" />
<generator class="identity" />
</id>
<property name="ParameterName" />
<bag name="ParameterValues" table="ParameterValue" cascade="none">
<key column="ParameterId" />
<one-to-many class="ParameterValue" />
</bag>
</class>