【问题标题】:Inserting row in SAP Hana 2.0 with Hibernate使用 Hibernate 在 SAP Hana 2.0 中插入行
【发布时间】:2017-07-23 02:26:21
【问题描述】:

我正在尝试在 Scala 代码中使用 Hibernate 在 SAP Hana 2.0 数据库中插入一行。该表有一个标识列。

这是桌子:

CREATE column TABLE banks (
  sk tinyint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
  code varchar(10) DEFAULT NULL,
  name varchar(100) DEFAULT NULL,
  notes text,
  version smallint DEFAULT NULL,
  PRIMARY KEY (sk)
);

这是 Hibernate 注释类:

@Entity
@Table(name = "banks")
class BankHib {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    var sk: Int = _

    var code: String = _
    var name: String = _
    var notes: String = _
    var version: Int = _
}

这是插入代码:

    session.beginTransaction
    val b = new BankHib
    b.code = "B3"
    b.name = "xxxxx"
    b.version = 1
    b.notes = "aaa"
    session.save(b)
    session.getTransaction.commit

这是我得到的错误:

Hibernate:插入银行(代码、名称、注释、版本)值(?, ?, ?, ?)

[警告] o.h.e.j.s.SqlExceptionHelper - SQL 错误:-11262, SQLState: 0A000 [错误] o.h.e.j.s.SqlExceptionHelper - 方法 不支持 Statement 的 prepareStatement( String, int )。 [错误] 应用程序-

如何做到这一点?

【问题讨论】:

    标签: scala hibernate hana


    【解决方案1】:

    这是创建序列号作为身份的方法:

    @Entity
    @Table(name = "banks")
    class BankHib {
    
        @Id
        @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "bank_generator")
        @SequenceGenerator(name="bank_generator", sequenceName="bankSeq", allocationSize=1)    
        var sk: Int = _
    
        var code: String = _
        var name: String = _
        var version: Int = _
    }
    

    并执行以下SQL语句:

    CREATE SEQUENCE bankSeq start with 1 increment by 1 minvalue 1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多