我搜索了很多关于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();
还有什么方法可以在休眠中实现这个目标吗?