¿Cómo uso JPA para persistir un objeto Map (java.util.Map) dentro de una entidad y asegurar que la persistencia caiga en cascada?

¡Recientemente comencé a jugar con Play! Framework for Java, versión 1.2.3 (la última). Mientras probaba el marco, me encontré con un extraño problema al tratar de persistir unMap objeto dentro de una entidad de Hibernate llamadaFooSystem. El objeto Map asigna mucho a una entidad de Hibernate que he llamadoFoo, con la declaraciónMap<Long, Foo> fooMap;

Mi problema es el siguiente: las tablas correctas se crean como las he anotado. Sin embargo, cuando laFooSystem objetofs persiste, los datos enfs.fooMap ¡no es

Aquí está el código que estoy usando para las entidades. Primero esFoo:

package models.test;

import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import play.db.jpa.Model;

@Entity
public class Foo extends Model
{
    @ManyToOne
    private FooSystem foosystem;

    public Foo(FooSystem foosystem)
    {
        this.foosystem = foosystem;
    }
}

Y aquí estáFooSystem:

package models.test;

import java.util.HashMap;
import java.util.Map;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import play.db.jpa.Model;

@Entity
public class FooSystem extends Model
{
    @ManyToMany(cascade = {CascadeType.ALL, CascadeType.PERSIST})
    @JoinTable(
        name = "fooMap",
        joinColumns = @JoinColumn(name = "foosystem"),
        inverseJoinColumns = @JoinColumn(name = "foo")
    )
    private Map<Long, Foo> fooMap = new HashMap<Long, Foo>();

    public FooSystem()
    {
        Foo f1 = new Foo(this);
        Foo f2 = new Foo(this);
        fooMap.put(f1.getId(), f1);
        fooMap.put(f2.getId(), f2);
    }

    public Map<Long, Foo> getFooMap()
    {
        return fooMap;
    }
}

Aquí está elController clase que estoy usando para probar mi configuración:

package controllers;

import javax.persistence.EntityManager;
import models.test.FooSystem;
import play.db.jpa.JPA;
import play.mvc.Controller;

public class TestController extends Controller
{
    public static void index() {
        EntityManager em = JPA.em();
        FooSystem fs = new FooSystem();
        em.persist(fs);
        render();
    }
}

¡El juego! Framework creó automáticamente una transacción para la solicitud HTTP. Aunque los datos se insertan en lafoo yfoosystem tablas, nunca se inserta nada en lafoomap table, que es el resultado deseado. ¿Qué puedo hacer sobre esto? ¿Qué me estoy perdiendo