2009-03-11 9 views
0

次の例では、id = 1のロールにロールの値をロードせずに保存する方法を教えてください。私が試してみました:ダイナミックマップエンティティモードを使用したHibernateの保存について

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、address)の値(?、?)

ご協力いただきますようお願い申し上げます。役割は、私の頭の上からマップ

答えて

0

が見える、あなたがマップモードでSession作業を必要としています。あなたはすでに試みたとして

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

その後dsと連携:私はこのようなものだと思います。

0

でなければなりませんように

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がデータベースと= 1が正常に新しいユーザーに永続化されたIDを持つ役割への参照を打つことはありません。 。

関連する問題