Метаданные аннотаций в спящем режиме - PullRequest
2 голосов
/ 12 августа 2011

есть ли способ получить метаданные о моих аннотациях в спящем режиме?

Мне нужна информация о Ассоциациях , если они обнуляются или нет.

Сейчас я могу запросить только ClassMetadata

http://docs.jboss.org/hibernate/core/3.5/javadocs/org/hibernate/metadata/ClassMetadata.html

Где я могу просмотреть свойства и проверить, является ли это

EntityType
http://docs.jboss.org/hibernate/core/3.5/javadocs/org/hibernate/type/EntityType.html

или CollectionType
http://docs.jboss.org/hibernate/core/3.5/javadocs/org/hibernate/type/CollectionType.html

EntityType, очевидно, имеет функцию isNullable, но не CollectionType

Итак, я подумал об использовании информации аннотации

 @GenericGenerator(name = "generator", strategy = "foreign", parameters = @Parameter(name = "property", value = "seizureI18n"))
 @Id
 @GeneratedValue(generator = "generator")
 @Column(name = "id", unique = true, nullable = false)
 public Integer getId() {
   return this.id;
 }

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

Привет

JS

Ответы [ 2 ]

2 голосов
/ 12 августа 2011

Я не уверен, что понимаю ваш вопрос, но если вы хотите увидеть, есть ли аннотация, вы можете сделать это (используя интроспекцию):

Annotation[] tabAnnotation = A.class.getField( "fieldB" ).getDeclaredAnnotations( );
for( Annotation annotation : tabAnnotation )
   if( annotation instanceof Entity )
      System.out.println( ((Entity)annotation).isNullable() );
2 голосов
/ 12 августа 2011

Коллекция не может быть обнуляемой по определению. Набор из n элементов означает, что есть n сущностей указанного типа, которые имеют ссылку на внешний ключ для этой сущности. Это ничего не значит из таблицы этой сущности.

Таким образом, единственными отношениями, которые вы можете проверить на обнуляемость, являются * отношения ToOne (OneToOne, ManyToOne).

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