簡體   English   中英

在播放框架2中使用anorm將對象持久化在postgresql數據庫中

[英]persist object in postgresql database with anorm in a play framework 2

我正在嘗試使用anorm庫將對象持久保存到我的play2 webapp中的postgresql Db中。 表“地址”的Create語句是這樣的:

create table address (
    addressId               bigserial not null,
    addressName             varchar(255) not null,
    street                  varchar(255) not null,
    number                  varchar(15) not null,
    ZIP                     varchar(15) not null,
    region                  varchar(63) not null,
    country                 varchar(63) not null,
    constraint pk_address primary key (addressId)
);

我的Scala / Anorm代碼如下所示:

private def create(address: Address, recursive : Boolean): Long = {
    DB.withConnection { implicit connection =>
        SQL( """
             insert into {table_name} (addressName, street, number, ZIP, region, country)
             values ({name},{street},{number},{ZIP},{region},{country})
            """).on(
            "table_name" -> TABLE_NAME,
            "name" -> address.name,
            "street" -> address.street,
            "number" -> address.number,
            "ZIP" -> address.ZIP,
            "region" -> address.region,
            "country"-> address.country
        ).executeInsert[Option[Long]]().get
    }
}

顯然,TABLE_NAME是一個包含字符串“ Address”的值

問題是當我嘗試使用適當的Address實例執行它時:

Address("Antonio","vacchi","12","48012","RA","Italia")

我得到這個例外:

[PSQLException: ERROR: syntax error at or near "$1" Posizione: 13] 

“ Posizione”是“ Position”的意大利語詞(不知道為什么我收到意大利語o的錯誤:)

{table_name}語法中使用插值將導致SQL包含一個定位參數。 對於CREATE語句,這是不受支持的。 因此,在這種情況下,您必須寫出Address而不是將其傳遞給on參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM