我有两个表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
}