【问题标题】:How to Update list of entity to database如何将实体列表更新到数据库
【发布时间】:2023-03-18 16:46:01
【问题描述】:

我的实体类名为员工,我想在选择并按下删除按钮时软删除我的实体。我也可以选择多个员工,所以在 Java 中我使用了员工实体列表,如果我使用 entityManager 的合并,我想将整个列表更新到数据库表中,我只能更新一行,即只有一个实体,所以怎么做我解决了这个问题?

这是一些示例代码。

@Entity
@Table(name="EmpInfo",schema="Auth")
public class EmpInfo{

@Id
@Column(name="EmpId")
private String userId;

@Column(name="EmailId")
private String emailId;

@Column(name="FirstName")
private String firstName;

@Column(name="LastName")
private String lastName;

@Column(name="MiddleName")
private String middleName;

@Column(name="UserAttributes")
private String userAttributes;

@Column(name="AddedDate")
private Timestamp addedDate;

@Column(name="ModifiedDate")
private Timestamp modifiedDate;

@Column(name="LastLoginDate")
private Timestamp lastLoginDate;

@Column(name="IsDeleted")
private int isDeleted;

@Column(name="AddedBy")
private String addedBy;

@Transient
private String addedByEmailId;


public String getAddedByEmailId() {
    return addedByEmailId;
}
public void setAddedByEmailId(String addedByEmailId) {
    this.addedByEmailId = addedByEmailId;
}

public EmpInfo() {
    // TODO Auto-generated constructor stub
}
public EmpInfo(EmpInfo uInfo){
    super();
    this.userId=uInfo.userId;
    this.emailId=uInfo.emailId;
    this.firstName=uInfo.firstName;
    this.lastName=uInfo.lastName;
    this.middleName=uInfo.middleName;
    this.userAttributes=uInfo.userAttributes;
    this.addedDate=uInfo.addedDate;
    this.lastLoginDate=uInfo.lastLoginDate;
    this.modifiedDate=uInfo.modifiedDate;
    this.addedBy=uInfo.addedBy;
    this.roles=uInfo.roles;

}



public List<RoleName> getRoles() {
    return roles;
}
public void setRoles(List<RoleName> roles) {
    this.roles = roles;
}
public int getIsDeleted() {
    return isDeleted;
}
public void setIsDeleted(int isDeleted) {
    this.isDeleted = isDeleted;
}
public Date getAddedDate() {
    return addedDate;
}
public void setAddedDate(Timestamp addedDate) {
    this.addedDate = addedDate;
}
public Date getModifiedDate() {
    return modifiedDate;
}
public void setModifiedDate(Timestamp modifiedDate) {
    this.modifiedDate = modifiedDate;
}
public Date getLastLoginDate() {
    return lastLoginDate;
}
public void setLastLoginDate(Timestamp lastLoginDate) {
    this.lastLoginDate = lastLoginDate;
}
public String getUserId() {
    return userId;
}
public void setUserId(String userId) {
    this.userId = userId;
}
public String getEmailId() {
    return emailId;
}
public void setEmailId(String emailId) {
    this.emailId = emailId;
}
public String getFirstName() {
    return firstName;
}
public void setFirstName(String firstName) {
    this.firstName = firstName;
}
public String getLastName() {
    return lastName;
}
public void setLastName(String lastName) {
    this.lastName = lastName;
}
public String getMiddleName() {
    return middleName;
}
public void setMiddleName(String middleName) {
    this.middleName = middleName;
}

public String getUserAttributes() {
    return userAttributes;
}
public void setUserAttributes(String userAttributes) {
    this.userAttributes = userAttributes;
}

public String getAddedBy() {
    return addedBy;
}
public void setAddedBy(String addedBy) {
    this.addedBy = addedBy;
}
@Override
public String toString() {
    return "EmpInfo [userId=" + userId + ", emailId=" + emailId + ", firstName=" + firstName + ", lastName="
            + lastName + ", middleName=" + middleName + ", userAttributes=" + userAttributes + ", addedDate="
            + addedDate + ", modifiedDate=" + modifiedDate + ", lastLoginDate=" + lastLoginDate + ", isDeleted="
            + isDeleted + ", addedBy=" + addedBy + "]";
}
}

【问题讨论】:

    标签: java sql-server spring-data-jpa


    【解决方案1】:
    public interface EmpInfoRepository extends JpaRepository<EmpInfo, String> {
    }
    

    使用它来保存实体列表,如下所示

    @Autowired
    private EmpInfoRepository empInfoRepository;
    
    empInfoRepository.save(listOfEntity)
    

    由于没有定义自定义实现,将使用SimpleJpaRepository完成的实现,它将根据@Id注释字段更新实体

    【讨论】:

    • @shridhar save/update ORM 会处理它,你只需要传递带有主键详细信息的实体@Id@Column(name="EmpId")private String userId;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多