我正在使用liferay,并希望在我的MySQL数据库中存储图像。我的service.xml是这样的:
<entity name="DLApp" local-service="true" remote-service="true">
<column name="blobId" type="long" primary="true" />
<column name="desc" type="String" />
<column name="image" type="Blob" />
</entity>
当我构建服务时,我得到build成功消息,但在blobuploadModelImpl类中的包com.test.blob.upload中出现错误。
我应该如何写函数来存储数据库中的图像和检索它?
我有Blob同样的问题,所以我把它改成字符串类型,它足以存储图像高达10 MB作为字符串,我使用MySql作为数据库,这些列被映射为LONGTEXT。此外,字段应该在模型提示中作为CLOB进行"提示",参见下面的示例。
<entity name="UserExt" local-service="true" remote-service="true">
<column name="photo" type="String" />
</entity>
<model-hints>
<model name="com.project.model.UserExt">
<field name="photo" type="String">
<hint-collection name="CLOB" />
</field>
</model>
</model-hints>
或者你可以将你的图片存储到Liferay的图片库
假设我的实体名称是SB_Claims,所以我通常会在SB_ClaimsModelImpl.java类中得到错误
sb_ClaimsModelImpl._ContentBlobModel = null;
未声明或定义sb_ClaimsModelImpl变量。我们只是在服务构建操作之后声明了这个变量。如果再次构建服务,则该代码将被服务构建器删除。总是在服务构建之后编写此代码,然后不构建服务,只部署portlet。这将解决问题。下面我只修改了这个类。
@Override
public void resetOriginalValues()
{
SB_ClaimsModelImpl sb_ClaimsModelImpl=this;
sb_ClaimsModelImpl._ContentBlobModel = null;
}
希望对大家有所帮助