Проверка не работает на EntityManager.merge () - PullRequest
3 голосов
/ 01 декабря 2010

У меня есть несколько проверок на мою сущность, например @NotNull, и некоторое поколение, например

@Id
@GeneratedValue(strategy = AUTO)
@Column(name = "ID")
private Long id;

@Column
@GeneratedValue(strategy = GenerationType.AUTO)
private Long referenceNumber;

Однако при вызове EntityManager.merge() эти значения не генерируются.Нулевые поля с аннотацией @NotNull передаются без жалоб.Даже id не генерируется.

Стоит ли как-то включать это поколение?Как и где?

Ответы [ 2 ]

6 голосов
/ 01 декабря 2010

Merge() по умолчанию не вызывает прослушиватели событий перед вставкой / обновлением.flush() после того, как merge() должен это сделать.

1 голос
/ 01 декабря 2010

В дополнение к ответу kraftan:

  • По умолчанию автоматическая проверка bean-компонентов в JPA 2.0 работает, если поставщик проверки «присутствует в среде», в противном случае он молча не работает.Вы можете добавить

    <validation-mode>CALLBACK</validation-mode>
    

    к persistence.xml, чтобы сгенерировать ошибку, если поставщик проверки не найден.

  • JPA не поддерживает генерацию произвольных (неидентифицированных) свойств.У некоторых провайдеров JPA могут быть расширения .
...