本帖最后由 kkctf 于 2010-11-23 22:38:08 编辑

解决方案 »

  1.   

    Annotation没怎么用过啊。不会No row 报错时,我基本上都是在映射文件中加上一个not-found属性,将他设置为ignore。
      

  2.   

    Dog的owner_id不是Owner的外键为什么你还要让他们关联呢 
      

  3.   

    up !你两个表都没有建立关系,干吗还要ManyToOne
      

  4.   

    你参考这个写:(实体关系要先映射,然后生成表。或者先建立好表关系,然后反向生成实体和映射。)many-to-one关系在数据库中如何体现,在JavaBean中如何体现,在
    Hibernate中如何映射many-to-one关系。
    1、数据库中:一个表的主健对应另一个表的外健。
    2、javaBean中:一个对象包含另一个对象的一个引用,另一个对象包含这个对象的一组(集合,用set)引用。
    3、在hibernate中:用set.key指定具体列。
    我们以订单Order(一方)和订单项Item(多方)为例:
    a、Order.hbm.xml的写法:<class name="Order" table="ec_order">
    <id name="id" column="id" type="integer">
    <generator class="native" />
    </id>
    <property name="owner" column="owner" type="string" />
    <property name="phone" column="phone" type="string" />
    <property name="address" column="address" type="string" />
    <set name="items" cascade="all-delete-orphan" inverse="true">
    <key column="orderid" />
    <one-to-many class="Item" />
    </set>
    </class>注:inverse=“true”表示忽略集合一端的变化。
    cascade="all-delete-orphan":这个比较麻烦一点,我们先来看看把cascade设为all的情况:在我们调用session.delete(order)时,会删除order下所有的item,但是如果调用order.getItems().remove(item),然后调用session.update(order)则不会删除此item,只会把 ec_item表中该条item记录的order_id设置为null。因此,如果想通过order.getItems.remove(item)删除对象,需要在已有级联的基础上加上“delete-orphan”。
    b、Item.hbm.xml的写法<class name="Item" table="ec_item">
    <id name="id" column="id" type="integer">
    <generator class="native" />
    </id>
    <property name="product" column="product" type="string" />
    <property name="amount" column="amount" type="integer" />
    <many-to-one name="order" class="Order" column="orderid"/>
    </class>
      

  5.   

    请问annotation怎么设置 帮忙查查吧