这篇文章主要介绍如何通过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

Liferay Model Hints的更多相关文章

  1. Django中如何配置Database缓存?

    BACKEND: django.core.cache.backends.db.DatabaseCache LOCATION: 数据库表名 示例: CACHES = { 'default': { 'BA ...

  2. Django: 之数据库导入、迁移和联用

    Django 数据库导入 从网上下载的一些数据,excel表格,xml文件,txt文件等有时候我们想把它导入数据库,应该如何操作呢? 以下操作符合 Django版本为 1.6 ,兼顾 Django 1 ...

  3. 【秒懂】号称最为简明实用的Django上手教程(下)

    号称最为简明实用的Django上手教程(下) 作者:白宁超 2017年8月25日08:51:58 摘要:上文号称[最为简明实用的Django上手教程]介绍了django基本概念.配置和相关操作.相信通 ...

  4. Django models数据库配置以及多数据库联用设置

    今天来说说web框架Django怎么配置使用数据库,也就是传说中MVC(Model View Controller)中的M,Model(模型). 简单介绍一下Django中的MVC: 模型(model ...

  5. Django-- 多数据库联用

    django项目中使用多个数据库的方法, 多个数据库的联用 以及多数据库时数据导入导出的方法. 直接给出一种简单的方法吧,想了解更多的到官方教程,点击此处 给每个app都可以单独的设置一个数据库 se ...

  6. Python 经典面试题汇总之框架篇

    前端和框架 1.谈谈你对http协议的认识 浏览器本质,socket客户端遵循Http协议 HTTP协议本质:通过\r\n分割的规范,请求响应之后断开链接 ==> 短连接.无状态 具体: Htt ...

  7. Python 经典面试题汇总之数据库篇

    数据库和缓存 1.列举常见的关系型数据库和非关系型都有那些? 关系型数据库(需要有表结构) mysql.oracle.splserver.postgresql.db2.sybase 非关系型数据库(是 ...

  8. Django 多数据库支持

    很多时候,需要去其他数据库查询数据,都将会面临多数据库支持问题. 1.在settings文件内添加多数据库连接 DATABASES = { 'default': { 'ENGINE': 'django ...

  9. Django:同一个app支持多个数据库

    我以我个人的Mynote工程说明,目的是要在backend这个app里面设置不同的model对应daysn和bear两个数据库进行操作 现在我们先简单对一个完全新建的django工程配置一个自动在my ...

随机推荐

  1. vue使用远程在线更新代码

    一.main.js import Vue from 'vue' import App from './App' import router from './router' import Vuex fr ...

  2. 阿里云安全研究成果入选人工智能顶级会议 IJCAI 2019, 业界首次用AI解决又一难题!

    8月10日至8月16日,国际人工智能组织联合会议IJCAI 2019(International Joint Conference on Artificial Intelligence 2019)在中 ...

  3. 转:Linux--进程间通信(信号量,共享内存)

    源地址:http://www.cnblogs.com/forstudy/archive/2012/03/26/2413724.html Linux--进程间通信(信号量,共享内存)(转)   一. 信 ...

  4. PAT甲级——A1045 Favorite Color Stripe

    Eva is trying to make her own color stripe out of a given one. She would like to keep only her favor ...

  5. day2(老男孩-Python3.5-S14期全栈开发)

    作者:赵俊            发布日期:2019/11/5 一.模块初识 import sys '''默认在当前目录下找模块,找不到再去python环境变量中寻找''' print(sys.pat ...

  6. css之页面三列布局之左右两边宽度固定,中间自适应

    左右两边宽度固定,中间自适应 左右两边绝对定位 可以利用浮动,左边的左浮动,右边的右浮动 css3 flex布局(html http://www.cnblogs.com/myzy/p/5919814. ...

  7. 冒泡排序算法[C++]

    冒泡排序应该是最容易实现的一种排序算法了.其基本思想是:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数,将小 ...

  8. HDFS 数据存取策略

  9. 卷积神经网络中的通道 channel

    卷积神经网络中 channels 分为三种:    (1):最初输入的图片样本的 channels ,取决于图片类型,比如RGB, channels=3    (2):卷积操作完成后输出的 out_c ...

  10. win7旗舰版64位搭建FTP服务器

    1.安装IIS组件:点击开始菜单->选择控制面板->程序->打开或关闭WINDOWS功能->展开Internet信息服务,勾选FTP服务器(包括FTP服务和FTP扩展性),展开 ...