Mar*_*ark 9 size service liferay
前历史:我data exception: string data, right truncation
在更新实体时遇到JDBCExceptionReporter 异常.
我发现这意味着,数据对于指定来说太大了varchar
.
在service.xml
列中指定如下:
<column name="message" type="String"/>
Run Code Online (Sandbox Code Playgroud)
我在Liferay的源代码中找到了ServiceBuilder
这个片段:
else if (colType.equals("String")) {
Map<String, String> hints = ModelHintsUtil.getHints(
_packagePath + ".model." + entity.getName(), colName);
int maxLength = 75;
if (hints != null) {
maxLength = GetterUtil.getInteger(
hints.get("max-length"), maxLength);
}
if (col.isLocalized()) {
maxLength = 4000;
}
if (maxLength < 4000) {
sb.append("VARCHAR(" + maxLength + ")");
}
else if (maxLength == 4000) {
sb.append("STRING");
}
else if (maxLength > 4000) {
sb.append("TEXT");
}
}
Run Code Online (Sandbox Code Playgroud)
现在我的问题是,如何max-length
为我的列定义?
Jon*_*nny 23
您需要修改您portlet-model-hints.xml
应该在以下位置找到的文件:
docroot/WEB-INF/src/META-INF/portlet-model-hints.xml
Run Code Online (Sandbox Code Playgroud)
在这里,您可以定义以下hint
值:
<hint-collection name="TEXTAREA">
<hint name="max-length">500</hint>
</hint-collection>
Run Code Online (Sandbox Code Playgroud)
然后hint
在同一个文件中找到要应用它的列,它应如下所示:
<field name="your_column_name" type="String">
<hint-collection name="TEXTAREA" />
</field>
Run Code Online (Sandbox Code Playgroud)
或者您也可以直接这样写,如果只有一个列具有指定的提示max-length
:
<field name="your_column_name" type="String">
<hint name="max-length">500</hint>
</field>
Run Code Online (Sandbox Code Playgroud)
然后,您需要build-service
再次运行,并且在部署portlet时,应更新数据库表以反映此更改.
我希望这回答了你的问题!
还有其他hints
一个列表可以在这个维基中找到,我刚刚max-length
在这里展示,因为它听起来就像你需要的那个.
如果您有一个表,一列,则完整文件看起来类似于以下内容.你的很可能会更长!
<?xml version="1.0"?>
<model-hints>
<hint-collection name="TEXTAREA">
<hint name="max-length">500</hint>
</hint-collection>
<model name="com.mynamespace.model.MyModelClass">
<field name="myColumn" type="String">
<hint-collection name="TEXTAREA" />
</field>
</model>
</model-hints>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7391 次 |
最近记录: |