Hibernate не смог определить тип поля MappedSuperClass

Проблема

У меня есть поле в MappedSuperClass, которое помечено @Column, но тип поля не определяется Hibernate.

Классы

@Getter
@Setter
@MappedSuperClass
public abstract class IdentifiableObject {
    @Id
    @GeneratedValue
    private Integer id;
}

@Getter
@Setter
@MappedSuperClass
public abstract class EvaluationPeriodObject extends IdentifiableObject{
    @Column
    private Period period;
}

@Data
@Entity
@Table(name = "PERIOD")
public class Period extends IdentifiableObject {
    @Column
    private LocalDate start;
    @Column
    private LocalDate end;
}

@Data
@Entity
@Table(name = MY_CLASS, indexes = {
    @Index(name = "FK_MY_CLASS_PERIOD", columnList = "PERIOD")
})
public class MyClass extends EvaluationPeriodObject {
    @Column
    private String description;
}

Трассировки стека

Caused by: org.hibernate.MappingException: Could not determine type for: Period, at table: MY_CLASS, for columns: [org.hibernate.mapping.Column(period)]
at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:455)
at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:422)
at org.hibernate.mapping.Property.isValid(Property.java:226)
at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:597)
at org.hibernate.mapping.RootClass.validate(RootClass.java:265)
at org.hibernate.boot.internal.MetadataImpl.validate(MetadataImpl.java:329)
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:459)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:879)
... 45 more

Дополнительная информация

Версия гибернации: compile 'org.hibernate:hibernate-core:5.2.13.Final'

Версия SpringBoot 2.0.0.RELEASE

If more Information is required, let me know.

I've been reading most post about this but form what I've read they mostly envolve people using annotations on 'Getters' and 'Fields', Since I'm using Lombok I don't have any Getters to put the annotations on so I believe this is not the problem I'm facing.

Я могу представить, что для сохранения периода потребуется как минимум два столбца?

Paul Janssens 04.04.2018 17:01

@Paul Janssens Period - это отдельная таблица в БД, поэтому я не думаю, что мне нужно несколько столбцов

Nodon Darkeye 04.04.2018 17:38
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
225
1

Ответы 1

Пожалуйста, попробуйте добавить AccessType.FIELD в аннотации получателей и установщиков @Getter(AccessType.FIELD).

Для @Getter такой опции нет

Bohemian 29.09.2020 23:44

Другие вопросы по теме