这篇文章主要介绍如何通过model hint 来修改liferay builder service生成数据库表中默认字段的长度。

1.什么是Model Hints?

它是对liferay builder service生成的model类的基本提示.

2. 它在什么地方被定义的?

portlet-model-hints.xml

3. 文件位置?

/docroot/WEB-INF/src/META-INF

4. 为什么被称为Model Hints?

Liferay把它命名为Model Hints,因为Model Hints表明了实体呈现给用户的方式,同时也指定了实体的字段在数据库中占的内存大小。

5. 我能在portal源码中找到关于model hints的更多详细信息吗?

能,在Liferay 7.0 ga4中, model hints的文件位于liferay-ce-portal-7.0-ga4/tomcat-8.0.32/webapps/ROOT/WEB-INF/lib/portal-impl/META-INF/portal-model-hints.xml

6. Model Hints的最佳用处是什么?

用来定义存储在数据库中实体的字段的size.

现在让我们来看一下实例(改变service builder在数据库生成的表的字段长度)

1. service.xml

<?xml version="1.0"?>
<!DOCTYPE service-builder PUBLIC "-//Liferay//DTD Service Builder 7.0.0//EN" "http://www.liferay.com/dtd/liferay-service-builder_7_0_0.dtd"> <service-builder package-path="my.test.sb">
<namespace>FOO</namespace>
<!--<entity data-source="sampleDataSource" local-service="true" name="Foo" remote-service="false" session-factory="sampleSessionFactory" table="foo" tx-manager="sampleTransactionManager uuid="true"">-->
<entity local-service="true" name="Foo" remote-service="true" uuid="true"> <!-- PK fields --> <column name="fooId" primary="true" type="long" /> <!-- Group instance --> <column name="groupId" type="long" /> <!-- Audit fields --> <column name="companyId" type="long" />
<column name="userId" type="long" />
<column name="userName" type="String" />
<column name="createDate" type="Date" />
<column name="modifiedDate" type="Date" /> <!-- Other fields --> <column name="field1" type="String" />
<column name="field2" type="boolean" />
<column name="field3" type="int" />
<column name="field4" type="Date" />
<column name="field5" type="String" /> <!-- Order --> <order by="asc">
<order-column name="field1" />
</order> <!-- Finder methods --> <finder name="Field2" return-type="Collection">
<finder-column name="field2" />
</finder> <!-- References --> <reference entity="AssetEntry" package-path="com.liferay.portlet.asset" />
<reference entity="AssetTag" package-path="com.liferay.portlet.asset" />
</entity>
</service-builder>

2.生成的portlet-model-hints.xml

<?xml version="1.0"?>

<model-hints>
<model name="my.test.sb.model.Foo">
<field name="uuid" type="String" />
<field name="fooId" type="long" />
<field name="groupId" type="long" />
<field name="companyId" type="long" />
<field name="userId" type="long" />
<field name="userName" type="String" />
<field name="createDate" type="Date" />
<field name="modifiedDate" type="Date" />
<field name="field1" type="String" />
<field name="field2" type="boolean" />
<field name="field3" type="int" />
<field name="field4" type="Date" />
<field name="field5" type="String" />
</model>
</model-hints>

3. 在改变model hints之前数据库中字段的长度

只是userName的长度是75

4. 现在改变portlet-model-hints.xml文件,内容如下。把useName的长度改为100

<?xml version="1.0"?>

<model-hints>
<model name="my.test.sb.model.Foo">
<field name="uuid" type="String" />
<field name="fooId" type="long" />
<field name="groupId" type="long" />
<field name="companyId" type="long" />
<field name="userId" type="long" />
<field name="userName" type="String">
<hint name="max-length">100</hint>
</field>
<field name="createDate" type="Date" />
<field name="modifiedDate" type="Date" />
<field name="field1" type="String" />
<field name="field2" type="boolean" />
<field name="field3" type="int" />
<field name="field4" type="Date" />
<field name="field5" type="String" />
</model>
</model-hints>

5. 运行cleanServiceBuilderTask(参照之前写的清理service builder产生的table文)之后数据库如下图所示,userName的长度变成了100.

然后大功告成,更多详细信息http://proliferay.com/liferay-model-hints/

https://dev.liferay.com/zh/develop/tutorials/-/knowledge_base/6-2/customizing-model-entities-with-model-hints#related-topics

最新文章

  1. web项目知识整理
  2. Django分析之导出为PDF文件
  3. Spring表单参数绑定中对“is”开头的boolean类型字段的的处理
  4. MSSql使用SQL语句快速查看表对的就说明,及表字段描述及字段类型
  5. 机器学习实战 - 读书笔记(05) - Logistic回归
  6. hadoop拾遗(五)---- mapreduce 输出到多个文件 / 文件夹
  7. PHP中的可变参数函数和可选参数函数
  8. Gitolite v3安装配置指南
  9. Struts2语法--Ognl
  10. python + selenium &lt;一&gt;
  11. 2017.3.12 H5学习的第一周
  12. Java基础学习 —— bat处理文件
  13. Gulp开发教程(翻译)
  14. React从入门到放弃之前奏(5):ReactRouter4
  15. Spring Aop底层原理详解
  16. 小技巧,把Markdown文本发布到微信公众号文章
  17. AVH IP网络广播系统
  18. WINDOWS 端口查看
  19. Sublime Es6教程1-环境搭建
  20. Flutter学习笔记(二)

热门文章

  1. javascript 解析ajax返回的xml和json格式的数据
  2. [转]Visual Studio 2010单元测试(3)--顺序单元测试
  3. 在xml中对one2many 字段屏蔽 添加项目
  4. html常用标签详解2-图片标签详解
  5. spring cloud深入学习(八)-----配置中心svn示例和refresh
  6. Jquery选择器总结二
  7. HBase 三维模型解析
  8. http协议与servletl理解
  9. 通过游戏学python 3.6 第一季 第六章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改 可复制直接使用 娱乐 可封装 函数
  10. windows 和 mac 文件夹共享问题汇总