0%

Liferay定制数据库字段长度

本文将介绍改变数据库字段默认长度。

开发环境

  • OS:ubuntu 12.04 64位
  • Liferay Portal:6.2.0-ce-ga1
  • Mysql:5.5.35

创建portlet

按照Liferay Service Builder中的步骤创建拥有一个Book实体的portlet。

自定义字段长度

service.xml文件如果有字段的类型为String,如

1
<column name="title" type="String" />

那么生成数据库表时,title字段的长度默认为75。如果要改变默认长度,需要修改sample/sample-portlet/src/main/resources/META-INF目录下的portlet-model-hints.xml文件内容。现修改为如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0"?>

<model-hints>
<model name="com.zhaiyz.model.Book">
<field name="bookId" type="long" />
<field name="companyId" type="long" />
<field name="groupId" type="long" />
<field name="userId" type="long" />
<field name="title" type="String">
<hint name="max-length">255</hint>
</field>
<field name="createDate" type="Date" />
<field name="modifiedDate" type="Date" />
</model>
</model-hints>

修改完成之后,需要再次执行以下命令,重新生成代码及数据库脚本打包并部署。

1
mvn liferay:build-service package liferay:deploy

成功执行完以上命令后,再启动tomcat,启动成功后,再查看数据库的LP_Book表,结果如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
mysql> desc LP_Book;
+--------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| bookId | bigint(20) | NO | PRI | NULL | |
| companyId | bigint(20) | YES | | NULL | |
| groupId | bigint(20) | YES | | NULL | |
| userId | bigint(20) | YES | | NULL | |
| title | varchar(255) | YES | | NULL | |
| createDate | datetime | YES | | NULL | |
| modifiedDate | datetime | YES | | NULL | |
+--------------+--------------+------+-----+---------+-------+
7 rows in set (0.00 sec)

可以看到title字段的长度已经变为255。还有别一种配置方法可以完成同样的功能,配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0"?>

<model-hints>
<hint-collection name="VARCHAR-255">
<hint name="max-length">255</hint>
</hint-collection>

<model name="com.zhaiyz.model.Book">
<field name="bookId" type="long" />
<field name="companyId" type="long" />
<field name="groupId" type="long" />
<field name="userId" type="long" />
<field name="title" type="String">
<hint-collection name="VARCHAR-255" />
</field>
<field name="createDate" type="Date" />
<field name="modifiedDate" type="Date" />
</model>
</model-hints>

实际开发中,推荐使用这种方法。

更多

portlet-model-hints.xml文件中还能对字段进行更多的配置,如default-valuedisplay-heightdisplay-width等属性。更多内容,请阅读Customize DB Column Sizes

参考文章

Customize DB Column Sizes


全文完