通过REST API创建资源时,生成负值和默认值的java序列不会插入Spring Boot和H2 DB中
我有一个基于Spring Boot
的REST API
,支持对资源执行CRUD
操作。除了我看到两个问题的帖子外,所有的方法都很有效:
Response
部分(如下所述)将active
值保持为null
,即使DB在schema.sql
中定义了默认值“Y”- 该序列正在生成负值(-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) 个答案