Struts 2 , Hibernate, Mysql e Ajax

Bom dia amigos.
Estou com problemas para finalizar um emprestimo de locadora.
Após listar os nomes dos clientes num <s:select> e os filmes em outro <s:select> preciso realizar o cadastro do emprestimo.
O cadastro do emprestimo é realizado com sucesso, porém, após realizado o nome do cliente e do filme selecionado passam a ficar null no mysql.

Outra coisa é o excluir clientes ou filmes que estão relacionados com empréstimos.
está dando erro. É obrigatório criar indices no mysql para utilizar o @Cascade(CascadeType.ALL)?
obs: se não existir relação com empréstimo não da erro ao excluir.

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
@Cascade(CascadeType.ALL)

VEJAM A BEAM EMPRESTIMO

package br.com.x25.locadora.model.bean;

import java.sql.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;

@Entity
@Table(name="tb_emprestimo")

public class Emprestimo {

	@Id
	@Column(name="id_emprestimo")
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private int id;
		
	@Column(name="dt_emprestimo")
	private Date data;
	
	@Column(name="vl_emprestimo")
	private double valor;
	
	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name="id_cliente", insertable=true)
	@Fetch(FetchMode.JOIN)
	@Cascade(CascadeType.ALL)
	private Cliente cliente;
	
	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name="id_filme", insertable=true)
	@Fetch(FetchMode.JOIN)
	@Cascade(CascadeType.ALL)
	private Filme filme;
	
	
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public Date getData() {
		return data;
	}
	public void setData(Date data) {
		this.data = data;
	}
	public double getValor() {
		return valor;
	}
	public void setValor(double valor) {
		this.valor = valor;
	}
	public Cliente getCliente() {
		return cliente;
	}
	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}
	public Filme getFilme() {
		return filme;
	}
	public void setFilme(Filme filme) {
		this.filme = filme;
	}
}

VEJAM A ACTION EMPRESTIMO


package br.com.x25.locadora.control;

import java.util.List;

import br.com.x25.locadora.model.bean.Cliente;
import br.com.x25.locadora.model.bean.Emprestimo;
import br.com.x25.locadora.model.bean.Filme;
import br.com.x25.locadora.model.dao.ClienteDao;
import br.com.x25.locadora.model.dao.EmprestimoDao;
import br.com.x25.locadora.model.dao.FilmeDao;

public class EmprestimoAction {

	private Emprestimo emprestimo;
	private List<Emprestimo> emprestimos;	
	
	private Filme filme;
	private List<Filme> filmes;    
	
	private Cliente cliente;
    private List<Cliente> clientes;
	
    
    public Cliente getCliente() {
		return cliente;
	}
	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}
	public List<Cliente> getClientes() {
		return clientes;
	}
	public void setClientes(List<Cliente> clientes) {
		this.clientes = clientes;
	}
	public List<Filme> getFilmes() {
		return filmes;
	}
	public void setFilmes(List<Filme> filmes) {
		this.filmes = filmes;
	}
	public Emprestimo getEmprestimo() {
		return emprestimo;
	}
	public void setEmprestimo(Emprestimo emprestimo) {
		this.emprestimo = emprestimo;
	}
	public List<Emprestimo> getEmprestimos() {
		return emprestimos;
	}
	public void setEmprestimos(List<Emprestimo> emprestimos) {
		this.emprestimos = emprestimos;
	}
	public Filme getFilme() {
		return filme;
	}
	public void setFilme(Filme filme) {
		this.filme = filme;
	}
	
	//cadastrar Emprestimo
	public String inserirEmprestimo(){
		new EmprestimoDao().inserirOUalterar(emprestimo);		
		return "index";
	}
	
	//listar Clientes e Filmes
	public String listarTodos(){
		clientes = new ClienteDao().listar();
		filmes = new FilmeDao().listar();
		return "combos";
	}
	
}

VEJAM A DAO EMRESTIMO

package br.com.x25.locadora.model.dao;



import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;

import br.com.x25.locadora.model.bean.Emprestimo;


public class EmprestimoDao {

	
	private SessionFactory f;
	private Session s;
	private Transaction t;
	
	
	public EmprestimoDao() {
		f = new AnnotationConfiguration().configure().buildSessionFactory();
		s = f.openSession();
		t = s.beginTransaction();
	}
	
	//inserir
	public void inserirOUalterar(Emprestimo emprestimo){
		s.saveOrUpdate(emprestimo);
		t.commit();
		s.close();
	}


}

VEJAM O <S:FORM>

<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Empréstimo</title>
</head>
<body>
<h2>Empréstimos</h2>
<a href="index.jsp">Cadastro de Cliente</a>
<a href="cadFilme.jsp">Cadastro de Filme</a>
<a href="emprestimo!listarTodos.action">Emprestimo</a>
<hr />

<s:form action="emprestimo!inserirEmprestimo" method="get" theme="ajax">

	<!--<s:textfield name="emprestimo.id" label="Id Emp:" />-->
	<s:select list="clientes" label="Clientes:" listValue="nome"
		listKey="id" name="emprestimo.cliente.id" />
	<s:select list="filmes" label="Filmes:" listValue="nome" listKey="id"
		name="emprestimo.filme.id" />
	<s:datetimepicker name="emprestimo.data" displayFormat="dd/MM/yyyy"
				label="Data:" theme="ajax"/>
	<s:textfield name="emprestimo.valor" label="Valor:" />

	<s:submit value="Gravar"/>
</s:form>
</body>
</html>

Resolvi o inserir dados.
Segue o problema no Excluir. @Cascade(CascadeType.ALL)