私はいくつかのフィールドをハッシュマップで更新する必要があり、私はそれをsession.update(オブジェクトオブジェクト)に入れようとしています。しかし、不明なエンティティとして例外エラーが発生しました:java.util.HashMap。ここに私のコードです。これらのフィールドを更新するために特定のフィールドのハイバネーションを更新することが可能です
private Map <String, Object> conditions=new HashMap <String, Object>();
public void addCondition(String field, Object condition){
conditions.put(field, condition);
}
public Object getFilter(String field){
return conditions.get(field);
}
public Map<String,Object>getFilterMap(){
return conditions;
}
:
class_name.addCondition("loginName", "dadan_evil");
class_name.addCondition("lastName", "Pirate");
session.update(filter.getFilterMap());//I tried this, but not working
User.hbm.xml:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="in.co.User" table="user">
<meta attribute="class-description">
This class contains the user detail.
</meta>
<id name = "loginName" type="string" column="loginName">
</id>
<property name="passCode" column="passCode" type="string"/>
<property name="firstName" column="firstName" type="string"/>
<property name="lastName" column="lastName" type="string"/>
<property name="alternateEMail" column="alternateEMail" type="string"/>
<property name="mobile" column="mobile" type="string"/>
<property name="sysAdmin" column="sysAdmin" type="boolean"/>
<property name="deleted" column="deleted" type="boolean"/>
<property name="authenticationCode" column="authenticationCode" type="string"/>
<property name="authenticated" column="authenticated" type="boolean"/>
</class>
</hibernate-mapping>
そして、私の更新方法:
private static void updateFromQuery(DBFilter filter) throws Exception {
Session session = factory.openSession();
try{
Class<?> className = filter.getCollectionClass();
Criteria criteria = session.createCriteria(className);
criteria.add(Restrictions.allEq(filter.getFilterMap()));
//I dont know how to update this, just an imaginary parameter
session.update(filter.getFilterMap());
}catch(HibernateException e){
e.printStackTrace();
}finally{
session.close();
}
}
そして、私はできません文字列クエリを書き留めるか、私は複数のテーブルと異なる値を持っているためです。私はクラス名を動的に取得しています。だから、私はすべての人に共通する文字列クエリを使用することはできません。だから、もし私が教えてくれたら教えてください。
この2つの値をデータベースに更新するにはどうすればよいですか。助けてください
データベースに直接java.util.HashMapを格納しようとしています!これをやりたいですか? – mwe
hashmapをupdate()メソッドに渡すことはできません。@EntityアノテーションでAnnotatedされているエンティティを渡す必要があります。マップから値を抽出してエンティティクラスに入れて、単純に更新します –
Hibernateをすでに使用しましたか? Hibernateは、tablenameを検索してから愚かにsql-update-statementsを作成するのではなく、(属性がどのフィールドにマップされているかを指定して)オブジェクト全体を永続化することを知っていますか? –