2016-06-27 2 views
0

Я хочу обновить отношение ManyToMany в моей инструкции по обновлению. Я использую Reference класс, вот класс:Обновление Hibernate с помощью списка

public class Reference implements Serializable { 

private static final long serialVersionUID = 1L; 

@Id 
@GeneratedValue(strategy=GenerationType.AUTO, generator="user_gen") 
@SequenceGenerator(name="user_gen", sequenceName="SEQ_USER") 
@Column(name = "DOCUMENTID", nullable = false) 
private int documentID; 

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

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

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

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

@ManyToMany(cascade = CascadeType.ALL, fetch=FetchType.EAGER) 
@JoinTable(name = "DOCUMENTS_MACHINES", joinColumns = { @JoinColumn(name = "DOCUMENTID") }, inverseJoinColumns = { @JoinColumn(name = "MACHINEID") }) 
private Set<Machine> machines = new HashSet<Machine>(); 

Я хотел бы знать, если это возможно, обновить ManyToMany отношения в заявлении HQL, потому что Session.update (объект) может вызвать конфликты из-за проблемы отсутствующих свойств.

Что я пробовал:

 String hqlUpdate = "update Reference r " + 
      "set r.title = :title, " + 
      "r.machines = :machines " + 
      "where r.documentID = :id"; 

    int updatedEntities = session.createQuery(hqlUpdate) 
      .setString("title", reference.getTitle()) 
      .setParameterList("machines", reference.getMachines()) 
      .setInteger("id", reference.getDocumentID()) 
      .executeUpdate(); 

Однако, это не работает, поэтому мой вопрос: Можно ли обновить коллекцию и как? Благодаря

ответ

0

Проверить, что многие ко многим обновления спящего режима, например отображение запроса:

many to many hibernate update

также посмотреть на CascadeType. Вы можете установить поведение для операций сохранения/обновления напрямую, используя CascadeType в аннотации отношений.

Смежные вопросы