但是假如我是收件人,那么c_ladingbills对我来说是多余的字段
又假如我是发件人,那么a_ladingbills对我来说也是多余的字段
所以分两个字段不好,但迫不得已。可能我说的太杂乱,其实简单来问就是:
客户实体类:
public class Customer{
......
private Set ladingbills;//客户对应的提货单
}提货单实体:
public class Ladingbill{
......private Customer consigner; // 发件人private Customer addressee; // 收件人
}
说明:收件人和发件人都属于客户类型,客户和提货单是一对多关系,(另外这是一个物流方面的设计)
似乎是很简单的一对多的双向关联的映射,但是具体写起来才发现问题不简单哦!(也许只是对我来说不简单:))
如果是你们,你们会怎么写映射?
请大家写出来一下好吗?

解决方案 »

  1.   

    突然想通了,不能说是多余,想问题想多了容易犯糊涂,错误的把c_ladingbills和a_ladingbills两个set集归属成Customer数据库表里的两个字段啦。:)不过还是有个问题想了解一下:
    <key column=“consigner_id”>和<many-to-one column="consigner_id" >两个column的值是不是得对应一样才能正确的进行外键关联?
    也就是说<key column=“”>里的column的值有什么讲究吗?还是说得跟<many-to-one column="" >里的column值一样?
      

  2.   

    虽然我会,不过我是懒人。基本的都不写。用ERWin生成数据库。hibernate对应的ORM用MyEclipse里面带的DB Brower。连接数据库,生成对应的配置文件。基本就手动改点。又快又好。抱歉 时间不够,不好仔细看你的问题
      

  3.   

    非常感谢SDMRauquin(冷月无心)提供的方法,我要动手好好学习一下了。
    :)
      

  4.   

    不过初学习的 还是建议学会了 为什么才这样。不然对技术提高不大。或者不会的 用这样生成的,看看为什么。用hibernate也是,多了 都不会sql了。
      

  5.   

    恩,我知道太依赖工具会让自己变笨。
    这个问题可以帮忙回答下不?:
    <key column=“consigner_id”>和<many-to-one column="consigner_id" >两个column的值是不是得对应一样才能正确的进行外键关联?
    也就是说<key column=“”>里的column的值有什么讲究吗?还是说得跟<many-to-one column="" >里的column值一样?
      

  6.   

    TUser:        <set name="personSet" inverse="true" lazy="true" cascade="all" >
                <key column="USERID"/>            //自己本表中在数据库的字段名字
                <one-to-many class="TPerson"/>
            </set>TPerson:        <many-to-one name="user"
               column="USERID"                   //外键的在数据库中的字段名字,可以不相同,总之对于好数据库中的字段名字
                class="TUser"/>
    //      实际我的Person就是多个外键的,但是TUser只用set一次,
            <many-to-one name="inputuser" column="INPUTUSERID" class="TUser" />
            <many-to-one name="shamDeleteUser" column="SHAMDELETEUSERID" class="TUser" />
            <many-to-one name="deleteUser" column="DELETEUSERID" class="TUser" />