Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / inheritance mapping in Hibernate / 3 сообщений из 3, страница 1 из 1
10.04.2007, 18:15:02
    #34450922
oson
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
inheritance mapping in Hibernate
Господа!
Подскажите плиз.
Есть родительский класс CurrentProcess и дочерний RegistrationCompanyProcess.
Пишу мэппинг для обеих в одном файле - CurrentProcess.hbm.xml
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<hibernate-mapping>
    < class  name="bo.CurrentProcess" table="CMA_CURRENT_PROCESSES">

        <id name="id" column="ID" type="java.lang.Long">
             <generator   class ="native"/>
        </id>
        ...
          <joined-subclass name="bo.RegistrationPersonProcess"   
                                                table="REGISTRATION_PERSON_PROCESSES">
            <key column="ID"/>
            <many-to-one name="registrablePerson" column="REGISTRABLE_PERSON_ID"/>
           
        </joined-subclass>
    </ class >
То есть этот субкласс имеет отношение many-to-one с другим классом - Person.

В классе RegistrationCompanyProcess пишу (ессно с get и set)
Код: plaintext
1.
2.
3.
4.
 public   class  RegistrationCompanyProcess
{
  Company registrableCompany;
}

Отдельный файл RegistrationPersonProcesshbm.xml я не создаю и в hibernate.cfg.xml указываю только
Код: plaintext
1.
   <mapping resource="bo/CurrentProcess.hbm.xml"/>
и НЕ указываю
Код: plaintext
1.
  <!--<mapping resource="bo/RegistrationPersonProcess.hbm.xml"/>-->
потому что его не создаю:)

Далее в классе Person

Код: plaintext
1.
2.
3.
4.
   public   class  Person  implements  java.io.Serializable
{
      private  Set registrationProcesses
}

Person.hbm.xml
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
  <hibernate-mapping>
    < class  name="bo.Person" table="PERSONS">
   ...
    <set name="registrationProcesses" inverse="true">
            <key column="REGISTRABLE_PERSON_NR" not- null ="false"/>
            <one-to-many  class ="bo.RegistrationPersonProcess"/>
        </set>
  </ class >



И вот тут выпадает ошибка
Код: plaintext
1.
2.
3.
4.
5.
6.
  java:hibernate/SessionFactory<-org.dom4j.tree.DefaultAttribute@170a4d0 [Attribute: name resource value "bo/RegistrationCompanyProcess.hbm.xml"]

[Configuration] Reading mappings from resource: bo/RegistrationCompanyProcess.hbm.xml

ERROR [HibernateUtil] Initial SessionFactory creation failed.
org.hibernate.MappingException: Resource: bo/RegistrationCompanyProcess.hbm.xml not found
Естественно его нет.
Почему же класс Person ищет этот RegistrationCompanyProcess.hbm.xml - ему недостаточно
мэппинга внутри CurrentProcess.hbm.xml в виде
<joined-subclass name="bo.RegistrationPersonProcess" ...> ?
...
Рейтинг: 0 / 0
11.04.2007, 08:55:37
    #34451641
vas0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
inheritance mapping in Hibernate
А чё они по разному называються RegistrationPersonProcess & RegistrationCompanyProcess ?
...
Рейтинг: 0 / 0
11.04.2007, 14:03:58
    #34452916
oson
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
inheritance mapping in Hibernate
Да, это я сам запутался, сорри.
В конечном итоге работает так(для истории):

CurrentProcess.hbm.xml

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
<hibernate-mapping>
    < class  name="bo.CurrentProcess" table="CURRENT_PROCESSES" polymorphism="implicit">

        <id name="id" column="ID" type="java.lang.Long">
            <generator  class ="sequence">
                <param name="sequence">CURRENT_PROCESSES_SEQUENCE</param>
            </generator>
       </id>
        .....
        <joined-subclass namebo.RegistrationPersonProcess" table="PERSON_PROCESSES">
            <key column="ID" foreign-key="RPP_CPR_FK"/>
            <many-to-one name="registrablePerson" column="REGISTRABLE_PERSON_NR"/>
            <set name="interviewProcesses" inverse="true">
                <key column="REGISTRATION_PROCESS_ID"/>
                <one-to-many class="bo.InterviewProcess"/>
            </set>
        </joined-subclass>

        <joined-subclass name="bo.InterviewProcess" table="INTERVIEW_PROCESSES">
            <key column="ID"/>
            <many-to-one name="registrationPersonProcess" column="REGISTRATION_PROCESS_ID"/>
            <set name="interviewReports" inverse="true">
                <key column="INTERVIEW_PROCESS_ID"/>
                <one-to-many class="bo.InterviewReport"/>
            </set>
        </joined-subclass>

        <joined-subclass name="bo.RegistrationCompanyProcess" table="COMPANY_PROCESSES">
            <key column="ID"/>
            <many-to-one name="registrableCompany" column="REGISTRABLE_COMPANY_ID" not-null="false"/>
        </joined-subclass>
</ class >
</hibernate-mapping>

CurrentProcess
Код: plaintext
1.
2.
3.
4.
5.
 public   abstract   class  CurrentProcess   implements  Serializable
{
     private   Long  id;
    ...
}
RegistrationPersonProcess
Код: plaintext
1.
2.
3.
4.
5.
   public   class  RegistrationPersonProcess  extends  CurrentProcess
{
    private    Person registrablePerson;
    private  Set interviewProcesses;
}
InterviewProcess
Код: plaintext
1.
2.
3.
4.
5.
 public   class  InterviewProcess  extends  CurrentProcess
{
    RegistrationPersonProcess registrationPersonProcess;
    Set interviewReports;
}
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / inheritance mapping in Hibernate / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]