@OneToOne однонаправленное отображение в JPA2.0 - получение ошибки SQL при сохранении - PullRequest
2 голосов
/ 09 февраля 2012

Я не могу понять, как объявить однонаправленные отношения OneToOne.Модель TripDeparture имеет внешний ключ модели Trip (так настраивается БД).Я получаю сообщение об ошибке ниже, когда пытаюсь добавить поездку с нулевой отправкой.Когда я вынимаю декларацию 'locationLocation', все работает нормально.

11891 [btpool0-2] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 1054, SQLState: 42S22
11891 [btpool0-2] ERROR org.hibernate.util.JDBCExceptionReporter - Unknown column 'tripId' in 'field list'

У меня заканчиваются идеи ... может кто-нибудь помочь ??

Спасибо!

Родитель:

@Entity
@Table(name = "TRIP")
public class Trip implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.REMOVE)
    @JoinColumn(name = "tripId")
    private TripDeparture departureLocation;

Ребенок:

@Entity
@Table(name = "DEPARTURE_LOCATION")
public class TripDeparture implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    private int tripId;

1 Ответ

3 голосов
/ 10 февраля 2012

Вот как я это решил.Вместо использования @JoinColumn я использовал @PrimaryKeyJoinColumn.Я также удалил переменную 'id' (и столбец) в DEPARTURE_LOCATION, но это не должно было иметь значения.

Родитель:

@Entity
@Table(name = "TRIP")
public class Trip implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.REMOVE)
    @PrimaryKeyJoinColumn
    private TripDeparture departureLocation;

Ребенок:

@Entity
@Table(name = "DEPARTURE_LOCATION")
public class TripDeparture implements Serializable {

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