Java 使用service builder类更新blob数据失败
我正在使用liferay-6.1 CE。我正在开发一个项目,使用ServiceBuilder将应用程序数据存储为数据库中的BLOB。 这是我在service.xml中的实体Java 使用service builder类更新blob数据失败,java,liferay,blob,liferay-6,Java,Liferay,Blob,Liferay 6,我正在使用liferay-6.1 CE。我正在开发一个项目,使用ServiceBuilder将应用程序数据存储为数据库中的BLOB。 这是我在service.xml中的实体 <entity name="MyEntity" local-service="true" remote-service="false" table="MyEntity"> <column name="myData" type="Blob"/> 持久化到db效果很好。但是当我尝试更新db中的同一记
<entity name="MyEntity" local-service="true" remote-service="false" table="MyEntity">
<column name="myData" type="Blob"/>
持久化到db效果很好。但是当我尝试更新db中的同一记录时,表中除blob数据字段外的其他字段都会更新
下面给出了更新Blob数据的代码
MyEntity entityobj = MyEntityLocalServiceUtil.getMyEntityByScreenName(PortalUtil.getUser(actionRequest).getScreenName());
byte[] bytes =String.valueOf(JAXBUtil.getInstance().marshal(appModelAttri, AppEntity.class)).getBytes();
Blob blobdata = new SerialBlob(bytes);
entityobj.setmyData(blobdata);
MyEntityLocalServiceUtil.updateMyEntity(entityobj);
我不明白为什么调用updateMyEntity方法时只有Blob数据没有得到更新。
使用service builder生成的类更新Blob数据有什么特别的地方吗?请帮助我。我找到了Blob更新失败的解决方案。要解决此问题,必须将cachedmodel设置为false,并使用两个参数(实体对象和合并)调用update方法。这样做可以强制使其执行session.saveOrUpdate语句,并跳过upadate()中的session.merge(appModel)语句批处理会话mpl的方法 entityobj.setCachedModel(false) MyEntityLocalServiceUtil.updateMyEntity(entityobj,false)
MyEntity entityobj = MyEntityLocalServiceUtil.getMyEntityByScreenName(PortalUtil.getUser(actionRequest).getScreenName());
byte[] bytes =String.valueOf(JAXBUtil.getInstance().marshal(appModelAttri, AppEntity.class)).getBytes();
Blob blobdata = new SerialBlob(bytes);
entityobj.setmyData(blobdata);
MyEntityLocalServiceUtil.updateMyEntity(entityobj);