JTDS игнорирует аннотацию масштаба OpenJPA на BigDecimal

Я сохраняю BigDecimal для MS SQL Server, используя OpenJPA и драйвер JTDS. Я указал определение столбца следующим образом:

@Column(precision = 22, scale = 4)
private BigDecimal initialFee;

Если я отброшу таблицу и получу OpenJPA для ее создания, то на SQL-сервере это будет выглядеть так:

Column_name Type       Computed     Length  Prec    Scale
initialFee  numeric    no           9       18      0    

Вот файл persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
  <persistence-unit name="puOpenJPA_Core" transaction-type="JTA">
    <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
    <jta-data-source>java:jboss/datasources/Core</jta-data-source>
    <class>...</class>
    <properties>
      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
      <property name="jboss.as.jpa.providerModule" value="org.apache.openjpa"/>
      <property name="openjpa.DynamicEnhancementAgent" value="false"/>
      <property name="openjpa.Log" value="File=stdout, DefaultLevel=WARN, Runtime=INFO, Tool=INFO, SQL=INFO"/>
      <property name="openjpa.jdbc.DBDictionary" value="org.apache.openjpa.jdbc.sql.SQLServerDictionary"/>
    </properties>
  </persistence-unit>
</persistence>

Как указать масштаб и точность для SQL-сервера?


person Sean    schedule 20.08.2014    source источник


Ответы (1)


Я прибегал к использованию:

@Column(columnDefinition="decimal(10,5)")

Не то решение, на которое я надеялся, поскольку мы используем разные СУБД с одним и тем же проектом, и я надеялся избежать проблем с совместимостью, но, похоже, оно работает на MSSQL и должно работать и на MySQL.

person Sean    schedule 21.08.2014