Hibernate Mapping проблема - PullRequest
       13

Hibernate Mapping проблема

1 голос
/ 08 августа 2011

У меня есть 3 таблицы: A, B и C. A содержит отношение один-ко-многим с B, а B - отношение один-к-одному с C. Когда я выполняю сеанс session.save (objA), строка будет создана в A, много строк будет создано в B, ссылаясь на идентификатор A, и одна строка должна быть создана в C для каждой записи в B, ссылаясь на идентификатор B.

Теперь проблема в том, что A и B заполняются, как и ожидалось, но в C строки заполняются, а столбец, содержащий идентификатор B, заполняется нулевым значением.

Это проблема с отображением в hbm.xml?

B.hbm.xml

    <one-to-one name="propertyC" class="com.model.C" 
       cascade="all" fetch="join">
    </one-to-one>    

C.hbm.xml

    <many-to-one name="propertyB" class="com.model.B" 
       column="B_ID"  unique ="true" fetch="join" update="true" insert="true" cascade="all">
    </many-to-one>

B.java

    class B{
    private Long id;
    private C propertyC;
    }

C.java

    class C{
    private Long id;
    private Long bId;
    private B propertyB;
    }

1 Ответ

1 голос
/ 08 августа 2011

Если у вас есть отношение oneToOne между B и C, почему оно определяется как сопоставление manyToOne в отображении C (а не OneToOne )?

Кроме того, если у вас двунаправленное отношение, вы должны определить элемент mappedBy отношения:

@Entity
private static class B {
    @Id
    private Long id;

    @OneToOne
    private C propertyC;
}


@Entity
class C {

    @Id
    private Long id;
    private Long bId;

    @OneToOne (mappedBy="propertyC")
    private B propertyB;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...