Problema para salvar dados do checklist em entidades relacionadas

Bom dia,

Tenho 3 Entitys (Usuario, Regra, RegraUsuario) que se relacionam sendo a RegraUsuario a intermediaria, segue os codigos delas:

Usuario:

@Entity
@Table(name="INTRA_NESIC_USUARIO")
public class Usuario {
	@Id @GeneratedValue
	private Long id;
	@Column(updatable = true, nullable = false)
	private String nome;
	@Column(updatable = true, nullable = false)
	private String login;
	@Column(updatable = true, nullable = false)
	private String senha;
	@Column(columnDefinition = "date DEFAULT GETDATE()", insertable = false, updatable = true, nullable = false) 
	private Date datacad; 
	@Column(columnDefinition = "int default 0", insertable = false, updatable = true, nullable = false) 
	private Long flgatv ; 
	@OneToMany(mappedBy="usuario", cascade=CascadeType.ALL)
	private Collection<RegraUsuario> regraUsuarioList;
	
	//getters e setters

Regra:

@Entity
@Table(name="INTRA_NESIC_REGRA")
public class Regra {
	@Id @GeneratedValue
	private Long id;
	@Column(updatable = true, nullable = false)
	private String regra;
	@Column(updatable = true, nullable = false)
	private String descricao;
	@Column(columnDefinition = "date DEFAULT GETDATE()", insertable = false, updatable = true, nullable = false) 
	private Date datacad; 
	@Column(columnDefinition = "int default 0", insertable = false, updatable = true, nullable = false) 
	private Long flgatv ;
	@OneToMany(mappedBy="regra", cascade=CascadeType.ALL)
	private Collection<RegraUsuario> regraUsuarioList;
	
	//getters e setters

RegraUsuario:

@Entity
@Table(name="INTRA_NESIC_REGRA_USUARIO")
public class RegraUsuario {
	@Id @GeneratedValue
	private Long id;
	@ManyToOne @JoinColumn(name="usuario_id")
	private Usuario usuario;
	@ManyToOne @JoinColumn(name="regra_id")
	private Regra regra;
	@Column(columnDefinition = "date DEFAULT GETDATE()", insertable = false, updatable = false, nullable = false) 
	private Date datacad; 
	@Column(columnDefinition = "int default 0", insertable = false, updatable = false, nullable = false) 
	private Long flgatv ;
	
	//getters e setters

Tudo funciona bem porem no jsp de cadastro de usuario eu inclui alguns checkbox que listam as regras cadastradas na entity Regra e ae eu posso selecionar as q eu quiser para atribuir regras ao usuario que estou cadastrando, porem ao inserir o usuario os campos regra_id e usuario_id da tabela RegraUsuario ficam com valor null.

Segue o codigo do jsp de adição de usuario (onde tenho quase certeza que esta o erro, só nao sei qual é):

<form id="usuariosForm" action="<c:url value="/usuarios"/>" method="POST">
	<fieldset>
		<legend>Criar novo usuário</legend>
		<label for="nome">Nome:</label>
		<input id="nome" class="required"
			type="text" name="usuario.nome" value="${usuario.nome }"/>
		<label for="regra_id">Regra:</label>
		<c:forEach items="${regraUsuarioList}" var="regra">
			<input type="checkbox" name="usuario.regraUsuarioList[].id" value="${regra.id}"/> ${regra.regra }	
		</c:forEach>
		<label for="login">Login:</label>
		<input id="login" class="required"
			type="text" name="usuario.login" value="${usuario.login}"/>
		<label for="senha">Senha:</label>
		<input id="senha" class="required" type="password" name="usuario.senha"/>
		<label for="confirmacao">Confirme a senha:</label>
		<input id="confirmacao" equalTo="#senha" type="password"/>
		<button type="submit">Enviar</button>
	</fieldset>
</form>
<script type="text/javascript">
	$('#usuariosForm').validate();
</script>

segue o controller e a DAO do usuario caso precise:

@Resource
public class UsuariosController {
	
	private final UsuarioDAO dao;
	private final RegraDAO daoRegra;
	private final Result result;
	private final Validator validator;
	private final UsuarioWeb usuarioWeb;
	
	public UsuariosController(UsuarioDAO dao, Result result, Validator validator, 
									UsuarioWeb usuarioWeb, RegraDAO daoRegra) {
		this.dao = dao;
		this.daoRegra = daoRegra;
		this.result = result;
		this.validator = validator;
		this.usuarioWeb = usuarioWeb;
	}
	
	@Post @Path("/usuarios")
	public void adiciona(Usuario usuario) {
		if (dao.existeUsuario(usuario)) {
			validator.add(new ValidationMessage("Login já existe", "usuario.login"));
		}
		validator.onErrorUsePageOf(UsuariosController.class).novo();
		dao.adiciona(usuario);
		result.redirectTo("/");
	}
	
	@Path("/logout")
	public void logout() {
		usuarioWeb.logout();
		result.redirectTo("/");
	}
	
	@Get @Path("/")
	public void loginForm() {
	}
	
	@Path("/negado")
	public void negado(){
	}
	
	public void novo() {
		result.include("regraUsuarioList",daoRegra.lista());
	}
}
@Component
public class UsuarioDAO {

	public boolean existeUsuario(Usuario usuario) {
		Usuario encontrado = (Usuario) HibernateUtil.currentSession().createCriteria(Usuario.class)
		.add(Restrictions.eq("login", usuario.getLogin()))
		.uniqueResult();
		return encontrado != null;
	}
	
	public void adiciona(Usuario usuario) {
		HibernateUtil.currentSession().save(usuario);
	}
	
	public Usuario carrega(Usuario usuario) {
		return (Usuario) HibernateUtil.currentSession().createCriteria(Usuario.class)
		.add(Restrictions.eq("login", usuario.getLogin()))
		.add(Restrictions.eq("senha", usuario.getSenha()))
		.uniqueResult();
	}
	
}
@Component
public class RegraDAO {
	public boolean existeRegra(Regra regra) {
		Regra encontrada = (Regra) HibernateUtil.currentSession().createCriteria(Regra.class)
		.add(Restrictions.eq("regra", regra.getRegra()))
		.uniqueResult();
		return encontrada != null;
	}
	
	public void adiciona(Regra regra) {
		HibernateUtil.currentSession().save(regra);
	}
	
	@SuppressWarnings("unchecked")
	public List<Regra> lista() {
		return HibernateUtil.currentSession().createCriteria(Regra.class).list();
	}
}

Eu alterei um pedaço do jsp e agora consigo inserir o reggra_id mas o usuario_id continua indo nulo.

parte alterada

<c:forEach items="${regraUsuarioList}" var="regra" varStatus="s">
	<input type="checkbox" name="usuario.regraUsuarioList[${s.index}].regra.id" value="${regra.id}"/> ${regra.regra }
</c:forEach>