Каким должен быть тип данных для id? - PullRequest
0 голосов
/ 12 апреля 2020

Хорошо, у меня есть класс сущностей Person:

@Table(name = "person")
public class Person {
    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;    // -------> Integer or int??                                
    @Column(name = "managerID")
    private  int managerID;
    @Column(name = "name")
    private  String name;
    @Column(name = "externalID")
    private  UUID externalID;


    public Person(long managerID, String name) {
        this.managerID = managerID;
        this.name = name;
        this.externalID = UUID.randomUUID();;
    }
}

В идеале, каким должен быть тип данных для идентификатора сущности, я использую SQL (RDBMS). Должно ли это быть int или Integer? И id Integer, какие проблемы могут возникнуть в int?

Ответы [ 2 ]

0 голосов
/ 12 апреля 2020

Хотя примитивный тип int будет работать, но вы должны использовать тип объекта Integer, чтобы избежать проблем при использовании любой реализации jpa-репозиториев. Вот одна из проблем, с которой вы можете столкнуться Всегда использовать примитивные объектные обертки для JPA @Id вместо примитивного типа?

0 голосов
/ 12 апреля 2020

Просто используйте примитивный тип int. Никогда не должно быть случая, когда это поле является нулевым, когда оно автоматически увеличивается. Если она отсутствует, вы не можете ссылаться на строку с ее идентификатором, используя SELECT ... WHERE id = ..., поэтому она не является допустимой записью.

Хотя примитивные типы могут быть проблемой, когда id создается без значения по умолчанию, это не произойдет в вашем столбце, поскольку вы автоматически увеличиваете его. Итак, если что-то имеет значение или поведение по умолчанию, сделайте его необнуляемым; если у него нет значения или поведения по умолчанию, сделайте его обнуляемым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...