2017-07-23 26 views
0

我想在Scala代碼中使用Hibernate在SAP Hana 2.0數據庫中插入一行。該表具有標識列。在HANA 2.0中用Hibernate插入行

這是表:

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 

這是我的錯誤m得到:

Hibernate: insert into banks (code, name, notes, version) values (?, ?, ?, ?)

[warn] o.h.e.j.s.SqlExceptionHelper - SQL Error: -11262, SQLState: 0A000 [error] o.h.e.j.s.SqlExceptionHelper - Method prepareStatement(String, int) of Statement is not supported. [error] application -

如何使這項工作?

回答

0

這是創建一個序列號作爲身份的方式:

@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