关注,我还没调通。是不是Hibernate不支持sql server啊?

解决方案 »

  1.   

    难道没有用Hibernate的吗?建议版主设Hibernate专栏
      

  2.   

    这是个数据约束条件的问题。“如果Employee表中company字段中存在与Company表中主键不同的数据或者该项为null”,这种情况根本就不应该发生,因为company字段是Employee表的外键,它是受到Company表中数据的约束的,不可以随便修改。如果遇到这种情况,直接把异常抛出去,告诉用户不要乱改数据好了。
      

  3.   

    或者,如果你的系统允许“不属于任何企业的员工”这样一种实体存在的话,那么是可以允许Employee的Company属性为null的。这时如果你调用employee.getCompany()方法,就必须自己捕捉ObjectNotFoundException,并告诉用户:这个员工是没有公司管的。
      

  4.   

    空值(null)的存在虽然违反数据完整性,可是在实际情况下是存在的。
    比如:客户对象中有国籍属性,并与国籍表相关联。
    但在客户提交的信息中,并没有填写国籍信息,这时数据存储可能是null值。
    Hibernate装载对象如Customer时会读属性信息,当其不能由null实例化国籍对象时,就会抛
    出异常。
    不知是否有在Hibernat的映射文件或在程序中控制的办法?请教!
      

  5.   

    可能没说清楚,异常在
            Query q = session.createQuery(
                      "from ProsecutionParty party "
            );
            List list = q.list();
    查询(q.list)时发生。
      

  6.   

    作为外键的数据项,在我看来就应该是not-null的。譬如你的问题,每个人天生地就有国籍,怎么可能让“国籍为null”的这种实体存在呢?它的存在本身就是不合逻辑的,就应该引发一个异常,不是吗?你说“但在客户提交的信息中,并没有填写国籍信息”,很简单,在Hibernate映射描述里把这个field设置为not-null,不填这条信息就不让他提交,直接把异常抛还给他好了。
      

  7.   

    http://forum.hibernate.org.cn/
    这个地方有答案的吧
    或者这篇文章对你也是有用的
    http://www.csdn.net/develop/read_article.asp?id=20945
      

  8.   

    Hibernate论坛的回答是:
      当关联字段是null值,返回的对象也是null,
      但如果关联字段是脏数据,则会报异常。除非整理数据!
    还是要谢谢大家~