我最近开始玩Play!Java框架1.2.3版(最新)。在测试框架时,尝试Map在名为的Hibernate实体中保留对象时遇到了一个奇怪的问题FooSystem。地图对象映射长到Hibernate的实体,我呼吁Foo,随着申报Map
Foo> fooMap;
我的问题如下:按照我的注释创建正确的表。但是,当FooSystem对象fs持久化时,其中的数据fs.fooMap就不会!
这是我用于实体的代码。首先是Foo:
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;
}
}
这里是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 fooMap = new HashMap();
public FooSystem()
{
Foo f1 = new Foo(this);
Foo f2 = new Foo(this);
fooMap.put(f1.getId(), f1);
fooMap.put(f2.getId(), f2);
}
public Map getFooMap()
{
return fooMap;
}
}
这是Controller我用来测试设置的课程:
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();
}
}
表演!框架会自动为HTTP请求创建一个事务。尽管将数据插入到foo和foosystem表中,但没有任何内容插入foomap表中,这是理想的结果。我该怎么办?我想念什么?