停止Hibernate在更新

时间:2018-02-07 10:23:52

标签: java hibernate interceptor

我搜索了很多关于Stack overflow dint的帖子,找到了很多相关的帖子。

问题: 我有一个实体 股票 xml文件:

<class entity-name="stock" table="STOCK">
    <id name="id" type="java.lang.Long" column="ID">
        <generator class="identity" />
    </id>
    <property name="name" column="NAME" type="string" />
    <property name="Type" column="TYPE" type="string" />
    <property name="tax" column="TAX" type="double" />
    <property name="password" column="PASSWORD" type="string" />
</class>

我正在使用hibernate来更新表。

从我的UI发送仅需要的文件以进行更新时的问题 像

[{
"id":2,
  "name": "stock1" 
}]

在这种情况下,hibernate会附加 nulls到实体的其他属性 喜欢 Hibernate Automaticaly为未更改的列生成空值:

  Stock{Type=null, tax=null, password=null,  name=stock1, id=2}

有没有办法避免这个

我试过了 这个

 **dynamic-update** which dint work.

我甚至尝试过: 添加拦截器

添加MyInterceptor。 哪个叫

public boolean onFlushDirty(Object entity, Serializable id, Object[] currentState, Object[] previousState, String[] propertyNames, Type[] types) {

}

我使用gson将json读取到List<Map<String, Object>>

更新代码:

Session s = this.sessionFactory.withOptions().interceptor(new 
MyInterceptor()).openSession();
Transaction tx = s.beginTransaction();
if (list.size() != 0) {
                for (int i = 0; i < list.size(); i++) {
                    s.update(dataEntityName, list.get(i));

                }
            }
tx.commit();
s.close();

还有什么方法可以在休眠中实现这个目标吗?

0 个答案:

没有答案