Основной класс MyMessage.
@Entity
@Table(name="messages")
public class MyMessage implements Serializable {
private String messageID;
// Список, который сохраняется в связанной таблице
private List<ParsedResult> parsedResults = new ArrayList<ParsedResult>();
// за уникальностью message_id следим самостоятельно
@Id
@Column(name = "message_id")
public String getMessageID() {
return messageID;
}
public void setMessageID(String headerMessageID) {
this.messageID = headerMessageID;
}
@OneToMany (cascade=CascadeType.ALL)
@JoinColumn(name = "original_id", nullable = false, updatable=true)
public List<ParsedResult> getParsedResults() {
return parsedResults;
}
public void setParsedResults(List<ParsedResult> parsedResults) {
this.parsedResults = parsedResults;
}
}
Полем MyMessage является список объектов класса ParsedResult.
@Entity
@Table (name="parsed_messages")
public class ParsedResult implements Serializable{
private Long resultId;
private String myKey;
private String myValue;
@Id
@Column(name="result_id")
@GeneratedValue(strategy=GenerationType.AUTO)
public Long getResultId() {
return resultId;
}
}
После создания объекта класса MyMessage и инициализации всех его полей он сохраняется используя hibernate'вский метод saveOrUpdate(MyMessage mess).
-------------------------------------------------------------------
Проблема заключается в том, что при сохранении объекта класса MyMessage
с уже существующим @Id происходит
обновление строк только в таблице "messages", а в таблицу "parsed_messages" строки
добавляются.
А
нужно чтобы в обоих таблицах происходило
обновление строк, а не добавление.
Я так понимаю, что этого можно добиться аннотациями. Если нет, прийдется работать с вложенной таблицей отдельно и самостоятельно следить за связью между таблицами...
Заранее спасибо за совет.