0

在下面的例子中,如何在不加载角色的情况下将角色的值保存到 id=1 的角色中?我努力了:

Map user = new HashMap<String,Object>();

user.put("address","Address test");
user.put("role",1);

session.save("User",user);

但这会导致:

java.lang.ClassCastException: java.lang.Integer cannot be cast to java.util.Map
    at org.hibernate.property.MapAccessor$MapGetter.get(MapAccessor.java:90)

Map user = new HashMap<String,Object>();

user.put("address","Address test");
user.put("role.id",1);

session.save("User",user);

不保存角色,控制台显示此 SQL: Hibernate: insert into user (ts, address) values (?, ?)

任何帮助将不胜感激。

4

3 回答 3

0

看起来角色应该是地图

于 2009-03-11T14:20:00.110 回答
0

在我看来,您需要Session在地图模式下工作。我认为是这样的:

  SessionFactory sf = ...;
  Session s = sf.openSession();
  Session ds = s.getSession(EntityMode.MAP);

然后ds像你已经尝试过的那样工作。

于 2009-03-11T15:01:06.580 回答
0

答案是:

Map<String,Object> user = new HashMap<String,Object>();

user.put("address","Address test"); 

user.put("role", session.load("Role",1));

session.save("User",user);

这个句子:

session.load("Role",1) 

不会使休眠状态命中数据库,并且对 id=1 的角色的引用成功地保留在新用户中。

于 2009-06-03T19:11:13.030 回答