gpt4 book ai didi

java - 如何在实体中正确创建关系

转载 作者:行者123 更新时间:2023-12-05 08:21:42 26 4
gpt4 key购买 nike

描述机器的实体

@Entity
@Table(name = "machine")
public class Machine {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "machine_node", joinColumns = @JoinColumn(name = "machine_id"), inverseJoinColumns = @JoinColumn(name = "node_id"))
private List<NodeMachine> nodeMachines = new ArrayList<>();
}

描述部分/节点的实体

@Entity
@Table(name = "node_machine")
public class NodeMachine {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
}

每台机器(nodeMachines列表)上安装了几个部分,每个部分可以安装在不同的机器上,所以增加了ManyToMany。

例如,轮子可以安装在摩托车或汽车上。摩托车可以有两个轮子,汽车可以有四个。

我将更详细地描述表格中的内容。我必须马上说这个例子不是很成功,只是为了理解。在 Machine 表中,我们有 100 M 摩托车 (1-100) 和 100 C 汽车 (1-100)。 NodeMachine 表中只有一个条目——K1 车轮,它适用于所有一百辆摩托车和所有一百辆汽车。由此无法确定每辆摩托车和每辆汽车应该有多少个轮子。因此,我认为应该有第三张表,其中显示了每辆汽车和摩托车的车轮数量。而且我认为在表中保留 200 个摩托车车轮记录和 400 个汽车车轮记录太多余了。

每个部分都以一定的数量安装在特定的机器上。我想通过了解节点和机器名称来获取安装在特定机器上的节点数。为此,您必须创建另一个包含字段的 count_machine_node 表

- machine_id
- node_id
- count

我知道您必须创建一个新实体。

@Entity
@Table(name = "node_machine")
public class CountNodeMachine {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private Long machine_id;
private Long node_id;
private Integer count;
}

但是您需要在这些实体中注册哪些连接?

如何正确链接这三个表?

我是否需要创建一个 CountNodeMachine 实体?

最佳答案

如果这有用,请发表评论。

机器实体:

@Entity
@Table(name = "machine")
public class Machine {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Integer id;

@Column(name = "name")
private String name;

@OneToMany(mappedBy="machineId")
List<MachinePartCount> count;

部分实体

@Entity
@Table(name = "part")
public class Part {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Integer id;

@Column(name = "name")
private String name;

@OneToMany(mappedBy="partId")
List<MachinePartCount> count;

关系实体

@Entity
@Table(name="machine_part")
@IdClass(MachinePartCountPK.class)
public class MachinePartCount {


@Id
private Integer machineId;

@Id
private Integer partId;

private Integer count;

复合键

@Embeddable
public class MachinePartCountPK implements Serializable{

private static final long serialVersionUID = 1L;

private Integer machineId;

private Integer partId;

输出:

    **machineService.findAll()**
getAllMachines: [Machine [id=1, name=m1, count=[MachinePartCount [machineId=1, partId=1, count=2]]], Machine [id=2, name=m2, count=[MachinePartCount [machineId=2, partId=102, count=4]]]]

**partService.findAll()**
getAllParts: [Part [id=1, name=p100, count=[MachinePartCount [machineId=1, partId=1, count=2]]], Part [id=102, name=p10, count=[MachinePartCount [machineId=2, partId=102, count=4]]]]

**machinePartCountService.findAll()**
getmachinePartEntries: [MachinePartCount [machineId=1, partId=1, count=2], MachinePartCount [machineId=2, partId=102, count=4]]

表格中的数据:机器表: machine零件表: partmachine_part 表: machine_part

关于java - 如何在实体中正确创建关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70184043/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com