【问题标题】:Hibernate/DB2 getting unknown column error 4460Hibernate/DB2 出现未知列错误 4460
【发布时间】:2019-10-29 18:07:07
【问题描述】:

我正在尝试将实体映射到现有表以用于只读目的。我使用的帐户只有 SELECT 权限。

我将@ID 映射到的列已填充。我的实体看起来像这样

@Entity
@Table(name = "MYTABLE", schema="MYSCHEMA")
public class PaymentsEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ssn", updatable = false, nullable = false)
    private Long ssn;

    @Column(name = "amount")
    private BigDecimal amount;

    @Column(name = "business_date")
    private Date businessDate;

    @Column(name = "receiver")
    private String receiver;

    @Column(name = "sender")
    private String sender;

    // getters and setters

}

我的仓库是这样的

@Repository
@Transactional
public interface PaymentsRepository extends JpaRepository<PaymentsEntity, BigInteger> {

    @Query(value = "SELECT sender, receiver, amount, business_date FROM MYSCHEMA.MYTABLE WHERE business_date = ?1 ORDER BY Amount ASC",
        nativeQuery = true)
    public List<PaymentsEntity> findByBusinessDate(Date businessDate);

}

当我调用 findByBusinessDate 方法时,我收到以下错误

com.ibm.db2.jcc.am.SqlException: [jcc][10150][10300][4.19.49] Invalid parameter: Unknown column name ssn. ERRORCODE=-4460, SQLSTATE=null

如果我将 ssn 字段的类型更改为 BigInteger,则会收到以下错误

 org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: wrong column type encountered in column [ssn] in table [PFA.PAYMENTS]; found [bigint (Types#BIGINT)], but expecting [decimal(19,2) (Types#NUMERIC)]

因此,该列并不是真正未知的,我收到一条无用的错误消息。

我已尝试使用 useJDBC4ColumnNameAndLabelSemantics=2 连接参数,但它并没有改变任何东西。

我使用的是 Hibernate 5.4.6.FINAL,IBM DB2 驱动程序是 4.19.49 版本。 DB2 数据库是在 AIX 上运行的 10.5 版。

感谢所有帮助。

【问题讨论】:

    标签: hibernate orm db2


    【解决方案1】:

    我认为您得到的第一个异常与您的 sql 投影中缺少 ssn 有关。正确的查询应该是SELECT ssn, sender, receiver, amount, business_date... 第二个异常的原因看起来完全不同。可能,GenerationType.IDENTITY 要求属性类型为 Long。

    【讨论】:

      猜你喜欢
      • 2013-03-30
      • 2013-09-03
      • 1970-01-01
      • 2012-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-02
      • 1970-01-01
      相关资源
      最近更新 更多