У меня есть родительский класс:
@Entity(name = "Master")
@Table(name = "master")
public class Master {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
private Integer id;
@Column(name = "name")
private String name;
@OneToMany(mappedBy = "master", cascade = CascadeType.ALL, fetch = FetchType.Lazy)
List<AdditionalAttribute> additionalAttributes = new ArrayList<>();
public void addAttributes(AdditionalAttribute attribute) {
additionalAttributes.add(attribute);
attribute.setFindings(this);
}
public void removeAttributes(AdditionalAttribute attribute) {
additionalAttributes.remove(attribute);
attribute.setFindings(null);
}
}
И дочерний класс:
@Entity(name = "additional_attribute")
public class AdditionalAttribute {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long Id;
private String attributeName;
@Column(length = 255)
private String attributeValue;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "master_id")
private Master master;
}
Теперь предположим, что я уже вставил данные в обе таблицы, например:
Master
================
id. name
1. xyz
AdditionalAttribute
======================================================
id. attributeName. attributeValue. master_id
1 Acme test 1
2. loreal red 1
Теперь, учитывая master_id
, как мне обновить attributeValue
в таблице AdditionalAttribute
для этого идентификатора ??
Я сделал следующее:
Получить список additionalAttributes
от главного объекта (тот, который мы получили из сеанса)
Перебрать список и получить каждый AdditionAttribute
объект.
Установить новое значение для объекта.
Это хороший способ обновления? Есть ли у нас лучший подход?