Например,
Код: Выделить всё
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
//...
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
Код: Выделить всё
@MappedSuperclass
public abstract class LongIdEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
public LongIdEntity() {}
public LongIdEntity(Long id) {
this.id = id;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
По какой-то причине Hibernate выдает следующую ошибку, когда какой-либо подкласс сопоставляется с @org.hibernate.envers.Audited и расширяет LongIdEntity.
Код: Выделить всё
ERROR 63328 --- [persistence] [ main] o.h.metamodel.internal.MetadataContext : HHH015007: Illegal argument on static metamodel field injection : org.hibernate.envers.DefaultRevisionEntity_#class_; expected type : org.hibernate.metamodel.model.domain.internal.EntityTypeImpl; encountered type : jakarta.persistence.metamodel.MappedSuperclassType
Что касается попыток, которые я пробовал,
- Аннотирование родительского и подкласса с помощью @Audited - что привело к той же ошибке
- Аннотирование подкласса только с помощью @Audited — это параметр, который я сейчас использую, что приводит к функциональному спящему режиму, несмотря на сообщение об ошибке.
Аннотирование только суперкласса, который ничего не делает (это намеренно), поскольку поля родительских классов наследуются в подклассы, как если бы они были их собственными столбцами, в результате родительский класс не имеет собственной таблицы и, соответственно, не подвергается аудиту. Кроме того, ошибка исчезает, что довольно странно, учитывая, что сообщения об ошибках заключаются в том, что спящий режим ожидал тип сущности и получил тип сопоставленного суперкласса, и обе эти аннотации применяются к одному и тому же родительскому классу одновременно.
< /li>
Подробнее здесь: https://stackoverflow.com/questions/781 ... g-an-error
Мобильная версия