【问题标题】:JTDS Ignoring OpenJPA scale annotation on BigDecimalJTDS 忽略 BigDecimal 上的 OpenJPA 比例注释
【发布时间】:2014-08-20 13:01:07
【问题描述】:

我正在使用 OpenJPA 和 JTDS 驱动程序将 BigDecimal 持久化到 MS SQL Server。我已经指定了这样的列定义:

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

如果我删除表并让 OpenJPA 创建它,那么它在 SQL Server 中看起来像这样:

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 Server 的比例和精度?

【问题讨论】:

    标签: java sql-server openjpa jtds


    【解决方案1】:

    我已经使用:

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

    不是我希望的解决方案,因为我们在同一个项目中使用不同的 DBMS,我希望避免兼容性问题,但它似乎适用于 MSSQL,也应该适用于 MySQL。

    【讨论】:

      猜你喜欢
      • 2018-02-23
      • 1970-01-01
      • 2016-05-22
      • 2021-05-11
      • 2011-11-13
      • 2012-07-16
      • 2011-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多