Почему поля, помеченные как окончательные или статические, не сохраняются в базе данных

Я пометил поле как статическое в классе bean-компонента, и оно не сохраняется в базе данных. может кто-нибудь объяснить, почему статические поля не сохраняются.

import java.util.Date;

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@Table(name = "USER_DETAILS")
public class UserDetails {

    @Id
    @Column(name = "USER_ID")
    private int userId;

    private static String userName;

    @Temporal(TemporalType.DATE)
    private Date joinedDate;
    private String Address;


    private String description;



    public Date getJoinedDate() {
        return joinedDate;
    }
    public void setJoinedDate(Date joinedDate) {
        this.joinedDate = joinedDate;
    }
    public String getAddress() {
        return Address;
    }
    public void setAddress(String address) {
        Address = address;
    }
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }

    public int getUserId() {
        return userId;
    }
    public void setUserId(int userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName + "from Getter";
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
}

Пытаюсь сохранить в базе данных postgreSQL. а поле userName не сохраняется.

Предоставленной вами информации недостаточно для полного понимания проблемы. Отредактируйте свой вопрос, чтобы предоставить дополнительную информацию, например, какую базу данных вы используете, код для сохранения элемента и т. д.

Susmit Agrawal 19.08.2018 10:40

@AmardeepBhowmick .. другие поля сохраняются, но не сохраняется только имя пользователя.

dhS 19.08.2018 10:45

Каковы соответствующие имена столбцов в БД? они имеют то же имя, что и объявленные поля?

Fullstack Guy 19.08.2018 10:45

Да, все такие же, только userId и User_ID, поскольку мы используем аннотацию @Column

dhS 19.08.2018 10:46

Я понял ... Поскольку статические поля не являются частью состояния объекта, они являются частью класса, сериализация игнорирует статические поля. поэтому userName не сохраняется в базе данных

dhS 19.08.2018 10:54
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
5
71
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Поскольку userName является статическим, оно не принадлежит экземпляру, оно принадлежит самому классу. Вот что означает статика.

Согласно документам:

If the entity class uses persistent fields, the Persistence runtime accesses entity-class instance variables directly. All fields not annotated javax.persistence.Transient or not marked as Java transient will be persisted to the data store. The object/relational mapping annotations must be applied to the instance variables.

Поскольку userName является статическим, оно не будет сохраняться.

Постоянные поля и свойства

Другие вопросы по теме