Java Persistence API (JPA) - переопределение атрибутов MappedSuperClass - PullRequest
0 голосов
/ 20 сентября 2009

У меня есть следующие вопросы

  1. У меня есть аннотированное поле @Id как часть моего @MappedSuperClass, и я позволяю всем своим сущностям расширять MappedSuperClass. Теперь, как мне переопределить суперкласс 'id', если мне нужно определить составной первичный ключ для моей сущности ... т.е. как я могу попросить мою сущность использовать ее составной первичный ключ, аннотированный как @EmbeddedId, вместо аннотированного поля @Id, унаследованного от MappedSuperClass? Будет ли аннотация @EmbeddedId в моей сущности автоматически переопределять @Id суперкласса?

  2. Я сделал несколько полей (которые используются большинством объектов в моей схеме) как часть моего MappedSuperClass. Теперь, как мне избежать добавления этих полей в виде столбцов, если немногие объекты не нуждаются в них?

Спасибо.

Ответы [ 2 ]

1 голос
/ 20 сентября 2009

[...] Как попросить мою сущность использовать составной первичный ключ, аннотированный как @EmbeddedId, вместо аннотированного поля @Id, унаследованного от MappedSuperClass? Будет ли аннотация @EmbeddedId в моей сущности автоматически переопределять @Id суперкласса?

AFAIK, ты не можешь. Так что не наследуйте от своего суперкласса сущности в этом случае, используйте другой суперкласс сущности.

Я сделал несколько полей (которые используются большинством объектов в моей схеме) как часть моего MappedSuperClass. Теперь, как мне избежать того, чтобы эти поля добавлялись в виде столбцов, если немногим сущностям они не нужны?

Ну, опять же, не наследуйте от суперкласса сущности, который содержит эти поля, и используйте другой суперкласс сущности.

0 голосов
/ 18 апреля 2013

JPA предоставляет attribute-override для переопределения отображений как для встроенных, так и для сопоставленных полей суперкласса.

Для аннотаций вы можете использовать аннотацию @AttributeOverride в классе java. Для нескольких атрибутов вы можете использовать аннотацию @AttributeOverrides, которая содержит массив аннотации @AttributeOverride.

...