I have two table with many-to-many relations. I mapped this two entities when I am persisting users doesn't insert anything to join table. I am debugging till the persist, I see groups list is not null.
Ther is no error message just persist user.
users user-group groups
I am using netbeans 7.3, Glassfish 3.1.2.2, postgresql 9.1 and eclipselink 2
Also, I tried to show sql scripts that properties below doesn't work for me.





Abstact DAO:

public abstract class GenericDAO implements Serializable{@PersistenceContextEntityManager entityManager;public void persist(E object){ entityManager.persist(object);}public void merge(E object){ entityManager.merge(object);}public void delete(E object){ object = entityManager.merge(object); entityManager.remove(object);}}Users Entity :

@Entity@Table(name = "users")@XmlRootElement@NamedQueries({ @NamedQuery(name = "Users.findAll", query = "SELECT u FROM Users u"), @NamedQuery(name = "Users.findByUserId", query = "SELECT u FROM Users u WHERE u.userId = :userId"), @NamedQuery(name = "Users.findByName", query = "SELECT u FROM Users u WHERE u.name = :name"), @NamedQuery(name = "Users.findBySurname", query = "SELECT u FROM Users u WHERE u.surname = :surname"), @NamedQuery(name = "Users.findByEmail", query = "SELECT u FROM Users u WHERE u.email = :email"), @NamedQuery(name = "Users.findByUsername", query = "SELECT u FROM Users u WHERE u.username = :username"), @NamedQuery(name = "Users.findByPassword", query = "SELECT u FROM Users u WHERE u.password = :password")})public class Users implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false) @Column(name = "user_id") private Integer userId; @Size(max = 2147483647) @Column(name = "name") private String name; @Size(max = 2147483647) @Column(name = "surname") private String surname; // @Pattern(regexp="[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?", message="Invalid email")//if the field contains email address consider using this annotation to enforce field validation @Size(max = 2147483647) @Column(name = "email") private String email; @Size(max = 2147483647) @Column(name = "username") private String username; @Size(max = 2147483647) @Column(name = "password") private String password; @ManyToMany(mappedBy = "usersList") private List groupsList; @OneToMany(mappedBy = "userId") private List
personList;//Getters SettersGroups Entity :

@Entity@Table(name = "groups")@XmlRootElement@NamedQueries({ @NamedQuery(name = "Groups.findAll", query = "SELECT g FROM Groups g"), @NamedQuery(name = "Groups.findByGroupId", query = "SELECT g FROM Groups g WHERE g.groupId = :groupId"), @NamedQuery(name = "Groups.findByGroupName", query = "SELECT g FROM Groups g WHERE g.groupName = :groupName"), @NamedQuery(name = "Groups.findByGroupDescription", query = "SELECT g FROM Groups g WHERE g.groupDescription = :groupDescription")})public class Groups implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false) @Column(name = "group_id") private Integer groupId; @Size(max = 2147483647) @Column(name = "group_name") private String groupName; @Size(max = 2147483647) @Column(name = "group_description") private String groupDescription; @JoinTable(name = "user_group", joinColumns = { @JoinColumn(name = "group_id", referencedColumnName = "group_id") }, inverseJoinColumns = { @JoinColumn(name = "user_id", referencedColumnName = "user_id") }) @ManyToMany(fetch = FetchType.EAGER) private List usersList;//Getters SettersUser DAO :

public class UserDAO extends GenericDAO implements Serializable { public List getAllUsers() { Query query = entityManager.createNamedQuery("Users.findAll"); List users = query.getResultList(); return users; }}

Check Solution