gpt4 book ai didi

java - 如何在基本实体中定义通用主键字段?

转载 作者:行者123 更新时间:2023-12-01 11:18:05 27 4
gpt4 key购买 nike

我创建了一个 BaseEntity 类,它将具有其他实体的所有公共(public)字段,如 created_datecreated_byupdated_by 等,我还在那里保留了主键 id 。我正在使用 extends 并使用基实体类中的字段。主要问题是 id 字段在一些实体中是 Long 类型,在其他一些实体中是 String 类型,所以我如何管理 id 字段?

基础实体类:

@Getter
@Setter
@MappedSuperclass
public abstract class BaseEntity implements Serializable {

private static final long serialVersionUID = 3779027956207925319L;

protected Long id;
private String createdBy;
private Date createdDate;
private String lastUpdatedBy;
private Date lastUpdatedDate;
private Boolean isActive;

public abstract Long getId();
public abstract void setId(Long id);

@Override
public String toString() {
return String.format(
"BaseEntity [createdBy=%s, createdDate=%s, lastUpdatedBy=%s, lastUpdatedDate=%s, isActive=%s]",
createdBy, createdDate, lastUpdatedBy, lastUpdatedDate, isActive);
}
}

最佳答案

有一个通用基础实体,其中通用类型定义了您的 id 列的类型;

@Getter
@Setter
@MappedSuperclass
public abstract class BaseEntity<T> implements Serializable {

protected T id;

// fields, constructors, methods etc
}

当您有一个 id 类型为 Long 的实体时,使用该类型进行扩展;

@Entity
public class TableWithLongId extends BaseEntity<Long> {

// fields, constructors, methods etc
}

或者当你需要一个 String 类型时 id;

@Entity
public class TableWithStringId extends BaseEntity<String> {

// fields, constructors, methods etc
}

关于java - 如何在基本实体中定义通用主键字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48055514/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com