<class name="PostMail" table="postmail">     
      <id name="mailId" type="java.lang.String" column="mailID">
        <generator class="assigned"/>
      </id>
      <!--<property name="officePost" column="officePost"  />-->
      <many-to-one
        name="officePost" column="officePost" 
        class="com.zhilin.cod.businesslogic.dictionary.model.Officeinfo"
        outer-join="false" cascade="none" 
      />
你的pm中好像没有别的属性了吧?既然Officeinfo中没有对应记录,那你这个pm对象实际上也没有什么意义了吧?

解决方案 »

  1.   

    当然有其它属性,这个数据库数据是从旧系统遗留的数据导过来的,虽然不规范但也不能删除,所以有时候即使postmail表的记录的officePost字段在officeinfo表中没有对应的记录也要能把postmail表记录的其它属性得到
      

  2.   

    那你手工把 officeinfo表中增加几条officePost数据不就可以了?
      

  3.   

    外连接  Hibernate 是怎么做的?
      

  4.   

    在one-to-many的地方设置lazy="true",加载父对象的时候不加载子对象。如果有需要的话,手写方法通过子对象外键查询,替代hibernate的加载。另一种解决方法是windindance(风舞轻扬) 说的那种。hibernate这样设计是为了保证数据库中的数据完整性,没有脏数据。挺合理的。但往往我们的数据库达不到这个标准,所以一般都用第一种方法解决。
      

  5.   

    to blackdreamzg(基本靠手) 
    PostMail邮件
    officeinfo邮局postMail中有个Officeinfo属性
    我想在load postMail时如果postMail表中的officeinfo字段的值在officeinfo表中没有对应的值时,就将postMail对象的officeinfo属性==null,或将officeinfo属性的主键赋值,officeinfo的其它属性赋为null;能不能通过hebernate配置实现。在one-to-many的地方设置lazy="true"
    这里不用一对多,load一个邮局时不可能把这个邮局的邮件都加载进来,没有意义,和我说的也不是一个问题呀。
      

  6.   

    to humanity(很健忘了)
    外连接  Hibernate 是怎么做的?
    我不太明白你的问题。
    是指数据库的外键约束吗,hibernate好像只影射其关联关系,没有实际的约束,就是用hibernate 插入postMail表时如果属性officeinfo在officeinfo表中没有对应的值时hebernate并不出错,只能靠数据库约束,或用代码验证。