Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / XDoclet и абстрактные классы? / 6 сообщений из 6, страница 1 из 1
01.12.2005, 12:07
    #33410671
Samik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XDoclet и абстрактные классы?
Здравствуйте,
есть такая проблема
имею абстрактный класс Class1 с реализованным
полем id а так же методами getId и setId.
Создаю класс Class2 extends Class1 и хочу в Class2 использовать
XDoclet но в Class2 нету объявления id так как оно полностью реализовано в Class1, (а генерировать xml файл для Class1 мне не нужно) можно ли указать XDoclet что реализация некоторых полей находиться в суперклассе?
Спасибо.
...
Рейтинг: 0 / 0
01.12.2005, 13:39
    #33411009
М.Голованов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XDoclet и абстрактные классы?
А зачем указывать что-то? Он сам разберется.

Пример из моего проекта:

- базовый класс (ЗАМЕТЬТЕ: в нем НЕТ специальных JavaDoc тегов типа @hibernate.class - следовательно, для него маппинг создаваться НЕ БУДЕТ!):

Код: 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.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
/**
 * @author Mikhail A.Golovanov [mgolovanov@yahoo.com]
 */

 public   class  OPSJob  implements  java.io.Serializable {

   protected   long  id;
   protected  String customerID;
   protected  String userID;

  /**
   * @hibernate.id
   *  generator-class="identity"
   *  unsaved-value="0"
   *  column="ID"
   */
   public   long  getId() {
     return  id;
  }

   public   void  setId(  long  value ) {
    id = value;
  }

  /**
   * @hibernate.property
   *  column="customerID"
   */
   public  String getCustomerId() {
     return  customerID;
  }

   public   void  setCustomerId( String value ) {
    customerID = value;
  }

  /**
   * @hibernate.property
   *  column="userID"
   */
   public  String getUserId() {
     return  userID;
  }

   public   void  setUserId( String value ) {
    userID = value;
  }

}

- производный класс:

Код: 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.
34.
/**
 * @author Mikhail A.Golovanov [mgolovanov@yahoo.com]
 *
 * @hibernate.class
 *  table="ODP_Catalog"
 */
 public   final   class  ODP_Catalog  extends  OPSJob {

   private   long  projectID;
   private  String projectName;

  /**
   * @hibernate.property
   *  column="projectID"
   */
   public   long  getProjectId() {
     return  projectID;
  }

   public   void  setProjectId(  long  value ) {
    projectID = value;
  }

  /**
   * @hibernate.property
   */
   public  String getProjectName() {
     return  projectName;
  }

   public   void  setProjectName( String value ) {
    projectName = value;
  }

}

Результат - корректный маппинг для ODP_Catalog:

Код: 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.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping  PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 2.0//EN" 
    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">

<hibernate-mapping>
    < class 
        name="com.foo.hibernate.ODP_Catalog"
        table="ODP_Catalog"
        dynamic-update="false"
        dynamic-insert="false"
    >

        <id
            name="id"
            column="ID"
            type="long"
            unsaved-value="0"
        >
            <generator  class ="identity">
            </generator>
        </id>

        <property
            name="projectId"
            type="long"
            update="true"
            insert="true"
            column="projectID"
        />

        <property
            name="projectName"
            type="java.lang.String"
            update="true"
            insert="true"
            column="projectName"
        />

        <property
            name="customerId"
            type="java.lang.String"
            update="true"
            insert="true"
            column="customerID"
        />

        <property
            name="userId"
            type="java.lang.String"
            update="true"
            insert="true"
            column="userID"
        />

        <!--
            To add non XDoclet property mappings, create a file named
                hibernate-properties-ODP_Catalog.xml
            containing the additional properties and place it in your merge dir.
        -->

    </ class >

</hibernate-mapping>
...
Рейтинг: 0 / 0
01.12.2005, 13:45
    #33411034
Samik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XDoclet и абстрактные классы?
Спасибо сейчас попробую.
...
Рейтинг: 0 / 0
01.12.2005, 13:49
    #33411056
Samik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XDoclet и абстрактные классы?
Если исходить из вашего кода, то следует что для всех классов унаследованных от OPSJob будет создаваться таблица со столбцом ID, а если я хочу для нового класса другое имя id столбца, следовательно мне надо переписывать методы в новом классе, или есть другой способ?
...
Рейтинг: 0 / 0
01.12.2005, 14:30
    #33411246
М.Голованов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XDoclet и абстрактные классы?
Перенесите определение поля из базового класса в производный. Если же вы хотите в тегах производного класса определять, какие поля наследовать из базового класса, то не знаю и знать не хочу... ненужные сложности.
...
Рейтинг: 0 / 0
01.12.2005, 14:42
    #33411296
Samik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XDoclet и абстрактные классы?
Спасибо.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / XDoclet и абстрактные классы? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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