2015-10-11 2 views
2

В JPA 2.1 specification, раздел 2.3.1 (стр 27):Какие аннотации являются «аннотациями сопоставления», на которые ссылается спецификация JPA?

По умолчанию типа доступа иерархии объекта определяется путем размещения аннотаций для отображения на атрибутах классов сущностей и сопоставляются суперклассы иерархия объектов, которые явно не указаны , укажите тип доступа.

В приведенном выше предложении, что такое и что не является «аннотацией отображения»? Все аннотации в анкетах отображения пакетов javax.persistence? Содержит ли спецификация полный список аннотаций отображения?

+0

Не все вещи в информатике (и в технике в целом) строго определены. Какую проблему вы пытаетесь решить, и мы скажем вам, является ли аннотация картографической или нет. –

+0

Что я хочу сделать, так это получить возможность определять, какой тип доступа используется для объекта. Для этого я читаю спецификацию JPA, но спецификация кажется не совсем понятной. Руководство пользователя Hibernate 4.3 намного понятнее, поскольку оно говорит: «По умолчанию тип доступа иерархии классов определяется положением аннотаций @ @ или' @ EmbeddedId'. – npcode

ответ

0

Похоже, что термин картографическая аннотация явно не определена в JPA 2.1 spec. Тем не менее, первый раздел главы 11 назван Аннотации для объектно-реляционного сопоставления, в котором говорится, что вы можете найти список картографических аннотаций в этом разделе.

+0

Спасибо за список. Список содержит '@ Id', который считается аннотацией отображения, потому что он используется в примере 2.2.1, где показан пример доступа к свойствам. Но, к сожалению, список содержит также '@ Transient', который, кажется, не является аннотацией отображения. – npcode

+0

@npcode Хотя '@ Transient' непосредственно не отображает фрагмент данных объектной модели в кусок данных модели базы данных. Его все еще можно назвать аннотацией отображения, поскольку она используется для создания логики Object/Relational Mapping. Однако это не утверждение, основанное на определении, а мое личное мнение. –

+0

Если '@ Transient' является аннотацией отображения, спецификация имеет противоречие, потому что она говорит:« Аннотации сопоставления не должны применяться к полям или свойствам, которые являются временными или переходными ». – npcode

0

Не все аннотации в пакете javax.persistence представляют собой аннотации отображения, и не все аннотации сопоставления могут быть помещены в поле/свойство объекта.

В опубликованном вами обсуждении представлены аннотации, которые помещаются в атрибуты (поле/свойство) классов сущностей.

В спецификации есть список этих аннотаций. Вы также можете посмотреть here.