【问题标题】:How to take list of entity from another database table in java spring boot?java - 如何在java spring boot中从另一个数据库表中获取实体列表?
【发布时间】:2021-08-03 11:56:45
【问题描述】:

我在代码中有 2 个类,在数据库中有 3 个表。我的课程与第三张桌子有关。其中之一是变量列表。如何使用 spring boot 注释连接到它。

ActiveIngredient.java

@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "active_ingredient")
public class ActiveIngredient {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "Id")
    private Integer id;
    @Column(name = "Name")
    private String ingredient;
    private Double gram; //Cannot connect to table
}

Medicine.java

@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "medicine")
public class Medicine {
    @Id
    @Column(name = "Id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    @Column(name = "BarcodeNo")
    private String barcodeNo;
    @Column(name = "Name")
    private String medicineName;
    private List<ActiveIngredient> ingredients; //Cannot connect to table
}

这是我的第三张桌子。

【问题讨论】:

标签: java mysql spring spring-boot


【解决方案1】:

尝试@SecondaryTable 可能会奏效。 See this post in Baeldung

在幕后,JPA 将主表与辅助表连接起来并填充字段。这个解决方案类似于@OneToOne 关系,但是这样我们可以在同一个类中拥有所有属性。

重要的是要注意,如果我们有一个列在辅助表中,我们必须使用 @Column 注释的 table 参数来指定它。如果列在主表中,我们可以省略 table 参数,因为 JPA 默认在主表中查找列。

另外,请注意,如果我们将它们嵌入到 @SecondaryTables 中,我们可以拥有多个辅助表。或者,从 Java 8 开始,我们可以使用多个 @SecondaryTable 注释来标记实体,因为它是一个可重复的注释。

【讨论】:

  • SecondaryTable 不用于 n:m 关系。它用于一个实体有两个表。
最近更新 更多