OpenJPA在查询中没有采用完整的列名

时间:2012-07-18 11:30:55

标签: jpql openjpa

我正在使用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

你能告诉我如何设置列名长度的值,以便我可能不会遇到这个问题。

1 个答案:

答案 0 :(得分:0)

如果您使用的是MySQL,则需要在persistence.xml文件中设置以下属性。

openjpa.jdbc.DBDictionary=mysql(maxColumnNameLength=256)

对于其他数据库,请参阅OpenJPA user manual。我也有兴趣了解您正在使用哪个数据库,以便我们可以解决此最大列问题。