JPA таблица порождает путаницу - PullRequest
0 голосов
/ 28 февраля 2019

, когда я пытался использовать JPA для генерации таблиц mysql, обнаружилось следующее исключение:

mappedBy ссылается на неизвестное свойство целевого объекта: com.cs.domain.GISProject.segmentOfProject в com.cs.domain.ProjectSegment.gisProcesses

вот мои определения сущностей;

ProjectSegment

@OneToMany(mappedBy = "segmentOfProject", cascade = CascadeType.ALL)
private Set<GISProject> gisProcesses;

GISProject

@ManyToOne
@JoinColumn
private transient ProjectSegment segmentOfProject;

это кажется нормальным из уроков, поэтому я запутался в том, что пошло не так.

среда Spring Boot 2.1.3.RELEASE, с spring-boot-starter-data-Драйвер jpa и mysql 5.1.28

1 Ответ

0 голосов
/ 28 февраля 2019

Ключевое слово transient в поле определения отношения @ManyToOne в сущности GISProject вызывает проблему.Как видно из сообщения об ошибке, из-за кратковременности поле полностью игнорируется для сохранения, и определение отношения нарушается с одной стороны.Удаление этого должно быть достаточно.

Переходные поля

Поля временного объекта - это поля, которые не участвуют в постоянстве, и их значения никогда не сохраняются в базе данных (аналогично переходным полям в Java, которые не участвуют в сериализации).Поля статического и конечного объекта всегда считаются временными.Другие поля могут быть явно объявлены как переходные с использованием либо модификатора переходного процесса Java (который также влияет на сериализацию), либо аннотации JPA @Transient (которая влияет только на постоянство):

public class EntityWithTransientFields {
    static int transient1; // not persistent because of static
    final int transient2 = 0;  // not persistent because of final
    transient int transient3; // not persistent because of transient
    @Transient int transient4; // not persistent because of @Transient
}

Приведенный выше класс сущности содержит только переходные (непостоянные) поля сущностей без реального содержимого для хранения в базе данных.

источник

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