我正在使用OpenJPA并使用orm.xml进行映射。对于我的列名长度超过某些字符数的某些情况,生成sql查询时jpql会将列名称生成为最多一些字符。
如果我有如下的映射
<entity name="OneOffSystemTemplateVariableValue" class="financing.tools.docgen.models.OneOffSystemTemplateVariableValue">
<table name="modification_variable_values"/>
<attribute-override name="id">
<column name="modification_variable_values_id"/>
</attribute-override>
.....
</attributes>
</entity>
当我在OneOffSystemTemplateVariableValue
上运行简单查询时,它会生成我的查询,如下所示
SELECT t0.**MODIFICATION_VARIABLE_VALUES_I**, t0.create_timestamp, t0.create_id, t0.last_update_timestamp, t0.last_update_id, t0.modification_object_id, t0.variable_name, t0.variable_value FROM Administrator.modification_variable_values t0 WHERE t0.one_off_template_id = ?
如果我将列名更改为MOD_VARIABLE_VALUES_ID,那么MODIFICATION_VARIABLE_VALUES_ID
列就在这里,那么我的查询效果很好。
因此生成的sql没有采用完整的列名长度。
我没有在我的应用程序中的任何位置设置maxColumnNameLength
。
你能告诉我如何设置列名长度的值,以便我可能不会遇到这个问题。
答案 0 :(得分:0)
如果您使用的是MySQL,则需要在persistence.xml文件中设置以下属性。
openjpa.jdbc.DBDictionary=mysql(maxColumnNameLength=256)
对于其他数据库,请参阅OpenJPA user manual。我也有兴趣了解您正在使用哪个数据库,以便我们可以解决此最大列问题。