我有一个具有许多相同传感器的设备,因此我需要根据需要映射尽可能多的实体属性,而不是为每个传感器设计一个表。
我如何在Spring Boot中做到这一点?
像这样:
@Entity
@Table(name = "device")
public class Devide {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Table(name = "sensor")
private Sensor sensor1; // This is my conceptual problem
@Table(name = "sensor")
private Sensor sensor2; // This is my conceptual problem
.
.
.发布于 2019-05-07 21:20:57
由于一个设备可以有多个传感器,并且一个传感器可以是多个设备的一部分,因此您必须在传感器和设备之间创建ManyToMany关系。您可以参考以下映射
@Entity
@Table(name = "Device")
public class Device {
// ...
@ManyToMany(cascade = { CascadeType.ALL })
@JoinTable(
name = "Device_Sensor",
joinColumns = { @JoinColumn(name = "Device_id") },
inverseJoinColumns = { @JoinColumn(name = "Sensor_id") }
)
Set<Sensor> Sensors = new HashSet<>();
// standard constructor/getters/setters
}
@Entity
@Table(name = "Sensor")
public class Sensor {
// ...
@ManyToMany(mappedBy = "Sensors")
private Set<Device> Devices = new HashSet<>();
// standard constructors/getters/setters
}Device_Sensor将作为其他两个表之间的链接。
https://stackoverflow.com/questions/56012261
复制相似问题