liferay的service.xml中的Blob数据类型

时间:2013-03-20 06:54:02

标签: java mysql image liferay blob

我正在使用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 SUCCESSFUL消息,但是blobuploadModelImpl类中的包com.test.blob.upload出错了。

我应该如何编写函数来将图像存储在数据库中并检索它?

2 个答案:

答案 0 :(得分:1)

我有与Blob相同的问题,所以我将其更改为String类型,它应该将最多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的图库中。

答案 1 :(得分:0)

假设我的实体名称是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;
     }

希望这对某人有用。