I have a class User mapped with roles like this:
{code:java} @Entity @Table(name = "user") public class User extends BaseEntity<String> {
@Id @Column(name = "id", nullable = false, updatable = false) private String isid;
@Column(name = "first_name") private String firstName;
@Column(name = "last_name") private String lastName;
@Size(min = 1, max = 2) @ManyToMany @JoinTable(name = "user_roles", joinColumns = @JoinColumn(name = "id", referencedColumnName = "user_id", nullable = false, insertable = false, updatable = false), inverseJoinColumns = { @JoinColumn(name = "id", referencedColumnName = "role_id", nullable = false, insertable = false, updatable = false), @JoinColumn(name = "role_type_id", referencedColumnName = "role_type_id", nullable = false, insertable = false, updatable = false) } ) @WhereJoinTable(clause = "role_type_id = 7") private List<Role> sevenRoles; {code}
Works as expected for reads and inserts. However, if I try to insert third role into the collection (max size 2) it will persist instead of failing because *BeanValidationListener* is not bound to *CollectionUpdateAction*. for comparison, if I simultaneously change the firstName/lastName, then the EntityUpdateAction is fired instead which has the *BeanValidationListener* bound and called during its _preUpdate_ call.
If this isn’t a bug, please advise how to achieve BeanValidation triggering also during updates of collection properties. |
|