Сохраняющийся не-сущностный класс, расширяющий сущность (jpa) - пример? - PullRequest
2 голосов
/ 22 февраля 2010

В руководстве JPA говорится, что можно иметь не-сущность, расширяющую класс сущности:

Сущности могут расширять как сущность, так и классы не-сущности и не-сущности классы могут расширять классы сущностей. - http://java.sun.com/javaee/5/docs/tutorial/doc/bnbqa.html

Можно ли сохранить такую ​​структуру?

Я хочу сделать это:

@Entity
abstract class Test { ... }

class FirstConcreteTest extends Test { ... } // Non-ntity
class SecondConcreteTest extends Test { ... } // Non-entity

Test test = new FirstConcreteTest();

em.persist(test);

Что я хотел бы сделать, это сохранить все поля, отображенные в абстрактном Test, в общую таблицу базы данных для всех конкретных классов (первого и второго), оставив все поля первого и второго тестового класса без сохранения (они могут содержать такие вещи, как EJB, пулы jdbc и т. Д.).

И бонусный вопрос. Можно ли сохранить абстрактное свойство тоже?

@Entity
abstract class Test {

    @Column
    @Access(AccessType.PROPERTY)
    abstract public String getName();

}

class SecondConcreteTest extends Test {
    public String getName() {
        return "Second Concrete Test";
    }
}

Ответы [ 2 ]

2 голосов
/ 23 февраля 2010
2 голосов
/ 23 февраля 2010

Прочтите эту ссылку еще раз.«Класс сущности должен соответствовать следующим требованиям: * Класс должен быть аннотирован аннотацией javax.persistence.Entity.»

Если класс не является сущностью, то он не является сущностью, поэтому несохранился как сущность.Все постоянные должны быть помечены как таковые, поэтому пометьте свой подкласс как сущность и отметьте поля, которые вы не хотите сохранять как «временные»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...