当前位置: 首页 > 知识库问答 >
问题:

在JPA实体中作为外键的长属性

白嘉志
2023-03-14

我有两个表审查和bedrijfsgegevens。Review表有一个主键(reviewId)和一个外键(bedrijfId)。BedrijfId是Bedrijfsgegevens表中的主键(作为Id)。我遇到了这个问题,因为我试图在Review表中添加一个bedrijfId,而Bedrijfgegevens表中不存在这个行,因此得到了一个异常。

我尝试使用@manytoone和@joincolumn注释来防止gettings这个异常。然而,我仍然得到一个异常,表示“IllegalArgumentException:Can not set java.lang.long字段org.loepr.loeprServices.models.bedrijfsgegevens.id to 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(外键)时,我不会得到异常。

共有1个答案

权弘新
2023-03-14

字段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
}
 类似资料:
  • 在一个双向关系中,我不能将子外键与父外键相关联。我有一个父类联盟是这样定义的: 子类ServiceCharge是这样定义的: 然后运行测试代码: 正如您所看到的,在将Union u持久化到数据库之后,我将这两个实体与一个控制器相关联,ServiceController.Add只是通过使用Union setter将实体charge1添加到servicecharges列表中,然后将该实体持久化到数据库

  • 我在表EmployeeCode的两列上有一个主键 主键(ecode,eid) 列eid是一个外键,它引用表Employee并具有ManytoOne映射,我已经在EmployeeCode.java中声明了如下内容 当我这样做时,我得到以下异常,因为我在这两个位置都使用了EID(因为它是另一个表的外键,也是复合主键的一部分) 我怎么能在两个地方都用同一个名字呢?

  • 对JPA来说比较新,所以我有一个架构问题。假设我有多对一关系的员工和部门表(即许多员工为一个部门工作): 所以我可以为员工和部门定义合适的实体,没有问题。但是,在一个视图中,我想显示部门列表,其中包含为该部门工作的员工数量,类似于这样: 我只是不确定使用JPA实现这一目标的正确策略是什么。。。我不想总是获取部门实体的员工数量,因为需要时只有一个视图。 看起来HiberNate的@公式是一种可能的方

  • 我正在使用实体框架管理我的sql server ce数据库。我希望我的表的主键由其他表的几个外键组成。我希望这样的事情能奏效: 但它会导致以下数据库迁移错误: 票据打印机。Bill::EntityType“Bill”没有定义键。定义此EntityType的键。Bills:EntityType:EntitySet“Bills”基于未定义键的类型“Bill”。 如何使表具有由这三个外键组成的主键?

  • 问题内容: 我有两个实体,它在哪里取决于表中的另一个外键。 我要完成的工作是拥有一个in,这样每当我有一个实体对象时,我都可以从语言ID访问所有描述。 实体 Car.java 实体 CarDescription.java 实体 语言.java 我遇到的问题是映射为我提供了从到的映射。 如何完成正确的映射? 问题答案: 在您需要添加属性: 然后,您可以像这样在实体中使用它:

  • 我有一个实体,它的复合主键由两个字段组成,其中一个也是复合外键的一部分。 背景:我有实体<代码>人员 、<代码>区域 和<代码>会话 。 与具有多对多关系,使用称为“和实体。 所以,我有,主键为(,)。本身是的外键。 也有一个字段。我希望(,)是的复合外键。 我的PersonSession代码: } 这看起来不错,它在数据库中创建了所有正确的关系。当我尝试插入个性化会话对象时,问题就出现了——ar