Note that there are some explanatory texts on larger screens.

plurals
  1. POhibernate update object partially
    text
    copied!<p>I have this model and hibernate mapping:</p> <pre><code>@Entity @Table(name = "candidate") public class Candidate extends Person { private Set&lt;Vacancy&gt; vacancies= new HashSet&lt;Vacancy&gt;(); @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) @JoinTable(name = "candidate_vacancy", joinColumns = @JoinColumn(name = "candidate_id"), inverseJoinColumns = @JoinColumn(name = "vacancy_id")) public Set&lt;Vacancy&gt; getVacancies() { return vacancies; } public void setVacancies(Set&lt;Vacancy&gt; vacancies) { this.vacancies = vacancies; } } </code></pre> <p>Person class:</p> <pre><code> @MappedSuperclass public abstract class Person { private Integer id; private String name; @Id @GeneratedValue(strategy = GenerationType.IDENTITY ) @Column (name = "id") public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } @Column(name = "name") @NotEmpty public String getName() { return name; } public void setName(String name) { this.name = name; } } </code></pre> <p>vacancy mapping </p> <pre><code>@Entity @Table(name = "vacancy") @XmlRootElement(name="vacancy") public class Vacancy { ... @ManyToMany(mappedBy = "vacancies", fetch = FetchType.EAGER) public Set&lt;Candidate&gt; getCandidates() { return candidates; ... } } </code></pre> <p>And I have so html form:</p> <pre><code>&lt;form action="saveCandidate" method="POST"&gt; name: &lt;input type="text" value="${candidate.name}" name="name" /&gt; &lt;input type="hidden" name="id" value="${candidate.id}"&gt; &lt;input type="submit" value="save changes" /&gt; &lt;/form&gt; </code></pre> <p>I handle my form in my @controller method:</p> <pre><code> public String saveCandidate(Model model, @ModelAttribute Candidate candidate) { candidateService.update(candidate); return "candidateMenu"; } </code></pre> <p>Using this way, I have problem. vacancies related for candodate delete from my database. I fix it so:</p> <pre><code>public String saveCandidate(Model model, @ModelAttribute Candidate candidate) { Candidate candidate2 = candidateService.findById(candidate.getId()); candidate.setName(candidate2.getName()); candidate.setSurname(candidate2.getSurname()); candidate.setPhone(candidate2.getPhone()); candidate.setResumeUrl(candidate2.getResumeUrl()); candidateService.update(candidate2); return "candidateMenu"; } </code></pre> <p>But I think it is very bad way for solving my problem. </p> <p>P.S. I know that fetchType.lazy is bad, but I don't want replace it.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload