在以下示例中,如何在不加载角色的情况下将角色值保存到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:插入用户(ts,地址)值(?,?)
非常感谢任何帮助。
答案 0 :(得分:0)
看起来角色应该是地图
答案 1 :(得分:0)
从我的头脑中,您需要Session
在地图模式下工作。我想是这样的:
SessionFactory sf = ...;
Session s = sf.openSession();
Session ds = s.getSession(EntityMode.MAP);
然后按照您的尝试使用ds
。
答案 2 :(得分: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)
不会使hibernate命中数据库,并且对id = 1的角色的引用已成功保留在新用户中。