2

我正在使用 OpenJPA 并使用 orm.xml 进行映射。在某些情况下,我的列名长度超过一定数量的字符,然后 jpql 在生成 sql 查询时将列名生成为最多一定数量的字符。

如果我有如下映射

<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 = ?

如果我 MODIFICATION_VARIABLE_VALUES_ID将列名更改为 MOD_VARIABLE_VALUES_ID ,那么我的查询效果很好。

所以生成的 sql 不采用完整的列名长度。

我没有maxColumnNameLength在我的应用程序中设置任何地方。

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

4

1 回答 1

0

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

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

对于其他数据库,请参阅OpenJPA 用户手册。我也有兴趣知道您正在使用哪个数据库,以便我们可以解决这个最大列问题。

于 2012-07-18T13:53:59.660 回答