Java – How to map many-to-many List in Hibernate with a Link Table


I would like to map a many-to-many in Hibernate using a link table. I have two classes, Parent and Child class, for example:

public class Parent{

private List<Child> _children;

//...getters and setters

I use a link table (link_table) with three columns link_id, parent_id, and child_id. The database is SQL server and id types are uniqueidentifier. So, I usually use guid for the id fields.

How can you implement this using the <list /> tag if this is the correct tag to use? Do you know of any good documentation to accomplish this?

I am currently getting a ConstraintViolationException but have not been able to find any good documentation or examples of this.

I think a main issue is: how to specify the link_id to be automatically generated in the link table.

Best Answer

I do this using annotations, specifically @ManyToMany and @JoinTable:

Hibernate Docs:

public class Employer implements Serializable {
        cascade={CascadeType.PERSIST, CascadeType.MERGE}
    public Collection getEmployees() {
        return employees;

public class Employee implements Serializable {
        cascade = {CascadeType.PERSIST, CascadeType.MERGE},
        mappedBy = "employees",
        targetEntity = Employer.class
    public Collection getEmployers() {
        return employers;