Как сделать телефон как ID Spring-boot - PullRequest
1 голос
/ 31 октября 2019

Как я могу убедиться, что только телефон и сообщение отправляются в мою базу данных, потому что теперь у меня также есть идентификатор каждого запроса, который был успешно сохранен. Я хочу сделать телефон уникальным идентификатором, по которому в базе данных будут сравниваться значения повторов.

Как сделать телефон идентификатором.

UserController

@RestController
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserRepo userRepo;
    @PostMapping(consumes = {MediaType.APPLICATION_XML_VALUE, MediaType.APPLICATION_JSON_VALUE})
    public String createUser(@Valid @RequestBody User requestUserDetails) {
        userRepo.save(requestUserDetails);

        return "The message delivered.";
    }
}

Пользователь

    @Entity
@Table(name = "ApiTable", schema = "TestApi")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;

    private String phone;

    private String message;


    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getMessage() {
        return message;
    }

    public void setLastName(String message) {
        this.message = message;
    }
}

Приложение

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

UserRepo

public interface UserRepo extends CrudRepository<User, Long> {

}

Ответы [ 3 ]

1 голос
/ 31 октября 2019

Вот как сделать phone поле Id на основе вашего примера:

@Entity
@Table(name = "ApiTable", schema = "TestApi")
public class User {

    @Id   
    private String phone;

    private String message;

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getMessage() {
        return message;
    }

    public void setLastName(String message) {
        this.message = message;
    }
}

И ваш репозиторий будет выглядеть так:

public interface UserRepo extends CrudRepository<User, String> {
}
0 голосов
/ 31 октября 2019

Вы не добавили столбцы для телефона и сообщения. Попробуйте с этим.

@Embeddable
public class KeyUser implements Serializable {

    @Column(name = "Phone", nullable = false)
    private int phone;

    @Column(name = "Message", nullable = false)
    private int message;

    /** getters and setters **/
}
0 голосов
/ 31 октября 2019

Просто используйте @UniqueConstraint в телефоне, паре сообщений и создайте новое поле для идентификатора.

@Entity
@Table(name = "ApiTable", schema = "TestApi",
uniqueConstraints={@UniqueConstraint(columnNames = {"phone" , "message"})
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", unique=true, nullable = false)
    private Long id;

    private String phone;

    private String message;

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getMessage() {
        return message;
    }

    public void setLastName(String message) {
        this.message = message;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...