Как сопоставить таблицу с атрибутом объекта? - PullRequest
1 голос
/ 06 мая 2019

У меня есть устройство с множеством идентичных датчиков, поэтому мне нужно сопоставить столько атрибутов сущностей, сколько необходимо, вместо того, чтобы создавать таблицу для каждого датчика.

Как это сделать в 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
    .
    .
    .


1 Ответ

0 голосов
/ 07 мая 2019

Поскольку ваше одно устройство может иметь много датчиков, и один датчик может быть частью майских устройств, вам необходимо создать связь 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 будет действовать как связь между двумя другими таблицами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...