我有两个表Review和Bedrijfsgegevens。 Review表具有一个主键(reviewId)和一个外键(bedrijfId)。 BedrijfId是Bedrijfsgegevens表中的主键(作为ID)。我遇到了这个问题,因为我试图在Review表中添加一个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实体中的主键和外键之间创建一种关系,以便当我使用在Bedrijfgegevens表中不作为主键存在的bedrijfId(外键)时,不会出现异常。

最佳答案

字段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
}

10-01 18:26