Numeric types mapping issue in Spring Data R2dbc with postgres

2.9k Views Asked by At

I tried to use Spring Data R2dbc/Postgres in a sample application.

  • Spring Boot 2.4.0-M2
  • R2dbc Postgres (managed by Spring Boot)
  • Spring Data R2dbc 1.2.0-M2(managed by Spring Boot)

The table scripts.


CREATE SEQUENCE IF NOT EXISTS ORDERS_ID_SEQ;

CREATE TABLE  IF NOT EXISTS ORDERS(
ID INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('ORDERS_ID_SEQ') ,
CUST_ID BIGINT NOT NULL,
AMOUNT REAL NOT NULL
);

ALTER SEQUENCE ORDERS_ID_SEQ OWNED BY ORDERS.ID;

The data.sql:

-- INSERT SAMPLE DATA
DELETE FROM ORDERS;
INSERT INTO ORDERS(CUST_ID, AMOUNT) VALUES (1, 100.2);

I use a ResourceDatabasePopulator to populate the data, it works.

But when I was trying to save the data by Repository, failed.

@Table(value = "ORDERS")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Order implements Serializable {

    @Id
    @Column(value = "ID")
    private Integer id;

    @Column(value = "CUST_ID")
    private Long customerId;

    // use BigDecimal or Java Money API in the real-world application.
    @Column(value = "AMOUNT")
    private Double amount;
}


public interface OrderRepository extends R2dbcRepository<Order,Integer> {
}

// in application runner.

orders .save(Order.builder().customerId(c.getId()).amount(201.0).build())

It threw an exception like this:

reactor.core.Exceptions$ErrorCallbackNotImplemented: java.lang.UnsupportedOperationException: Binding parameters is not supported for the statement 'INSERT INTO ORDERS (CUST_ID, AMOUNT) VALUES (?, ?)'
Caused by: java.lang.UnsupportedOperationException: Binding parameters is not supported for the statement 'INSERT INTO ORDERS (CUST_ID, AMOUNT) VALUES (?, ?)'
    at io.r2dbc.postgresql.SimpleQueryPostgresqlStatement.bind(SimpleQueryPostgresqlStatement.java:78) ~[r2dbc-postgresql-0.8.4.RELEASE.jar:0.8.4.RELEASE]
    at io.r2dbc.postgresql.SimpleQueryPostgresqlStatement.bind(SimpleQueryPostgresqlStatement.java:44) ~[r2dbc-postgresql-0.8.4.RELEASE.jar:0.8.4.RELEASE]

The complete codes is here.

Updated: Give up extending from AbstractR2dbcConfiguration, and get resovled when following the official guide.

0

There are 0 best solutions below