有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

通过REST API创建资源时,生成负值和默认值的java序列不会插入Spring Boot和H2 DB中

我有一个基于Spring BootREST API,支持对资源执行CRUD操作。除了我看到两个问题的帖子外,所有的方法都很有效:

  1. Response部分(如下所述)将active值保持为null,即使DB在schema.sql中定义了默认值“Y”
  2. 该序列正在生成负值(-45),即使该序列应该从1开始,并按照schema.sql中的定义递增

端点:

http://localhost:8080/client (POST)

有效载荷:

{
    "clientName": "Walmart"
}

响应:(为什么活动字段为空且id=-45而不是4?)

{
    "clientName": "Walmart",
    "active": null, //THIS SHOULD BE 'Y'
    "_links": {
        "self": {
            "href": "http://localhost:8080/client/-45" (THIS SHOULD BE 4 INSTEAD OF -45)
        },
        "client": {
            "href": "http://localhost:8080/client/-45"
        }
    }
}

模式。sql

CREATE SEQUENCE IF NOT EXISTS CLIENT_SEQ START WITH 1 INCREMENT BY 1;
CREATE TABLE IF NOT EXISTS CLIENT(
  CLIENT_ID     BIGINT          NOT NULL  DEFAULT CLIENT_SEQ.NEXTVAL PRIMARY KEY,
  CLIENT_NAME   VARCHAR(255)    NOT NULL,
  ACTIVE        CHAR(1)         NOT NULL  DEFAULT 'Y'
);

数据。sql

INSERT INTO CLIENT(CLIENT_NAME) VALUES ('SPOTIFY');
INSERT INTO CLIENT(CLIENT_NAME) VALUES ('DAILY BURN');
INSERT INTO CLIENT(CLIENT_NAME) VALUES ('CREATIVE BUG');

ClientRepository。java

@RepositoryRestResource(path = "client")
public interface ClientRepository extends PagingAndSortingRepository<Client, Long> {

}

客户端。java

@Entity
@Data
public class Client {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "client_id_generator")
    @SequenceGenerator(name = "client_id_generator", sequenceName = "client_seq")
    private Long clientId;
    private String clientName;
    private String active;
}

共 (0) 个答案