У меня есть Spring Boot
на основе REST API
, который поддерживает CRUD
операции с ресурсом.Все методы работают нормально, кроме POST, где я вижу две проблемы:
- Раздел
Response
(упомянутый ниже) сохраняет значение active
как null
, даже если для БД установлено значение по умолчанию:'Y' определено в schema.sql
- Последовательность генерирует отрицательное значение (-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"
}
}
}
schema.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'
);
data.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> {
}
Client.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;
}