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:ユーザー(ts、アドレス)の値に挿入(?、?)

どんな助けでも大歓迎です。

4

3 に答える 3

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のロールへの参照は新しいユーザーで正常に永続化されます。

于 2009-06-03T19:11:13.030 に答える
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 に答える