Длинное свойство как внешний ключ в объекте JPA - PullRequest
0 голосов
/ 01 мая 2019

У меня есть две таблицы обзора и Bedrijfsgegevens.Таблица обзора имеет первичный ключ (reviewId) и внешний ключ (bedrijfId).BedrijfId - это первичный ключ (как Id) в таблице Bedrijfsgegevens.Я столкнулся с этой проблемой, потому что я пытался добавить строку в таблицу обзора с идентификатором bedrijfId, которого нет в таблице Bedrijfgegevens и по праву получил исключение.

Я пытался использовать, я использовал аннотации @ManyToOne и @JoinColumn, чтобы предотвратить получение этого исключения.Тем не менее, я получаю исключение: «IllegalArgumentException: невозможно установить поле java.lang.Long org.loepr.loeprservices.models.Bedrijfsgegevens.id в значение java.lang.Long»

@Entity
@Data
@Table(name = "bedrijfreviews")
public class Review {

    @ManyToOne(targetEntity = Bedrijfsgegevens.class)
    @JoinColumn(name = "bedrijfid")
    private Long bedrijfId;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @JsonProperty("reviewId")
    @Column(name = "reviewid")
    private Long reviewId;

    //other properties
}
@Entity
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Bedrijfsgegevens {

    @Id
    @JsonProperty("Id")
    private Long id;

    //other properties
}

Я ожидаю создать связь между первичным и внешним ключом в объектах JPA, чтобы при использовании bedrijfId (внешнего ключа), который не существует в качестве первичного ключа в таблице Bedrijfgegevens, я не получал исключение.

1 Ответ

0 голосов
/ 02 мая 2019

Поле Review.bedrijfId должно быть объявлено Bedrijfsgegevens;например,

@Entity
@Data
@Table(name = "bedrijfreviews")
public class Review {

    @ManyToOne(targetEntity = Bedrijfsgegevens.class)
    @JoinColumn(name = "bedrijfid")
    private Bedrijfsgegevens bedrijf;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @JsonProperty("reviewId")
    @Column(name = "reviewid")
    private Long reviewId;

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