2009-03-11 3 views
0

다음 예에서, id = 1 인 역할에 role 값을 어떻게 저장하지 않고 저장할 수 있습니까? 나는 시도했다 :Dynamic Map 엔티티 모드를 사용하여 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을 보여줍니다 : 최대 절전 모드 : 사용자에 삽입을 (ts, address) 값 (?,?)

도움이 될 것입니다. 역할이지도 내 머리의 상단에서

답변

0

이 보이는, 당신은 Session지도 모드에서 작업해야합니다. 당신이 이미 시도로

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

그런 다음 ds 작업 : I는 다음과 같이 생각한다.

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) 

최대 절전 모드는 데이터베이스와 = 1이 성공적으로 새 사용자에 유지되는 ID와 역할에 대한 참조를 공격하지 않습니다 .