zoukankan      html  css  js  c++  java
  • Liferay Model Hints

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

  • 相关阅读:
    基于Haproxy+Keepalived构建高可用负载均衡集群
    基于 Haproxy 构建负载均衡集群
    shell for循环练习题99乘法表
    帮软件同事写的vsftpd服务虚拟用户管理脚本
    sed文件处理练习题
    判断ssh登录密码验证错误超过5次的IP被拉黑
    使用shell中数组功能生成自己的手机号
    利用Crontab设置每个月第一个周六的17:30执行/opt/shell.sh 脚本
    Tomcat 项目代码上线步骤详解
    Jar/War/Ear等包的作用与区别详解
  • 原文地址:https://www.cnblogs.com/hibou/p/7084655.html
Copyright © 2011-2022 走看看