Hibernate не соответствует JPA относительно @Access? - PullRequest
3 голосов
/ 06 июля 2010

Согласно моей книге JPA 2.0 (и онлайн-документации), я должен иметь возможность смешивать доступ к полям и свойствам в рамках одной сущности или иерархии сущностей. Аннотация @ Access для класса указывает доступ по умолчанию. При помещении в поле или свойство getter @Access может указывать, что для этого поля следует переопределить значение по умолчанию.

@Entity
@Access(AccessType.FIELD)
Class Foo {

  @Id
  int id;

  @Column(name = "myfield")
  String myField;

  @Column(name = "myProp")
  @Access(AccessType.PROPERTY)
  public int getMyProp () {
    return 3;
  }

  public void setMyProp (int p) {
    // do nothing
  }
}

Этот класс должен привести к таблице с тремя столбцами. Однако с Hibernate это не так ... столбец "myProp" отсутствует в таблице, потому что, очевидно, Hibernate берет свое поле против свойства cue из идентификатора объекта и работает с ним ... полностью игнорируя спецификацию JPA в отношении @Access .

Кто-нибудь может это подтвердить или я где-то допустил глупую ошибку?

Ответы [ 2 ]

1 голос
/ 06 июля 2010

Судя по документам, ваш код кажется правильным.Аннотация @Access (AccessType.FIELD) сверху не нужна, поскольку вы аннотировали поле int id;Это говорит Hibernate использовать доступ к полю.Я попробовал очень похожий пример со смешанными аннотациями и конфигом xml.Это приводит к тому же поведению, так что это, вероятно, ошибка в спящем режиме.

Я пробовал в спящем режиме 3.5.3

1 голос
/ 06 июля 2010

Я видел похожие (не такие же, но похожие) проблемы, как ЧЧХ-5004 , поэтому я не исключаю, что это может быть новым (TCK не кажется исчерпывающим). Но какую версию Hibernate вы используете? Ты пробовал с последним?

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