Я пометил поле как статическое в классе 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 не сохраняется.
@AmardeepBhowmick .. другие поля сохраняются, но не сохраняется только имя пользователя.
Каковы соответствующие имена столбцов в БД? они имеют то же имя, что и объявленные поля?
Да, все такие же, только userId и User_ID, поскольку мы используем аннотацию @Column
Я понял ... Поскольку статические поля не являются частью состояния объекта, они являются частью класса, сериализация игнорирует статические поля. поэтому userName не сохраняется в базе данных




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