java map 持久化_如何使用JPA将Map(java.util.Map)对象持久保存在实体中并确保持久性级联?...

我最近开始玩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表中,这是理想的结果。我该怎么办?我想念什么?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值