在春季靴子中,我可以将相同的实体用于具有相同结构的多个表 我有多个表格不同的表,但它们具有相同的结构。 这些桌子是随时创建的,所以我不知道它们的名字。 是否可以拥有一个单一的实体来...

问题描述 投票:0回答:1
并在飞行上指定表名称。

@Data @Entity @Table(name = "APPLICATIONS", schema = "AIM") public class Application2 { }

    
您可以创建一个基础实体并从中继承其他实体。这意味着基本实体类都将实现所有共同的所有内容,而不同的一切都将是子类中的覆盖和/或其他功能。
请参阅这篇文章,其中讲述了所有具有ID的实体以及它为审核提供特定示例的基础实体的创建。这是他们提供审核的示例:

import jakarta.persistence.Column;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;

import javax.persistence.MappedSuperclass;
import java.io.Serializable;
import java.util.Date;
import java.util.Objects;

@Getter
@Setter
@MappedSuperclass
public abstract class BaseEntityAudit extends BaseEntity implements Serializable {
    private String createdBy;
    private String updatedBy;

    @CreationTimestamp
    @Column(name = "created_at", updatable = false)
    private Date createdAt;

    @UpdateTimestamp
    @Column(name = "updated_at")
    private Date updatedAt;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof BaseEntityAudit)) return false;
        if (!super.equals(o)) return false;
        BaseEntityAudit that = (BaseEntityAudit) o;
        return createdBy.equals(that.createdBy) &&
                updatedBy.equals(that.updatedBy) &&
                createdAt.equals(that.createdAt) &&
                updatedAt.equals(that.updatedAt);
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(),
     createdBy, updatedBy, createdAt, updatedAt);
    }

    @Override
    public String toString() {
        return "BaseEntityAudit{" +
                "createdBy='" + createdBy + '\\'' +
                ", updatedBy='" + updatedBy + '\\'' +
                ", createdAt=" + createdAt +
                ", updatedAt=" + updatedAt +
                "}" +
                super.toString();
    }
}
the:
java spring hibernate jpa boot
1个回答
1
投票

它是抽象的,这不是必需的,但是除非您具有根实体类型,否则这是有道理的。因此,如果您有一个人,然后想要某些人的其他表格,那么您可能会选择不抽象,但是如果没有主要的,默认的类型,那么最好的剩下是Abstract,Ampactrackyly

IT没有指定它指的是哪个表,因为它是抽象的,当然,如果适合您的需求更好,您可以使用具体的基础类型。 这是从基本实体类型继承的实体类:

import com.example.entity.common.BaseEntityAudit;
import lombok.Getter;
import lombok.Setter;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;

@Entity
@Getter
@Setter
@Table(name = "users")
public class User extends BaseEntityAudit {

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

    @Column(name = "email")
    private String email;

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\\'' +
                ", email='" + email + '\\'' +
                '}' +
                super.toString();
    }
}

如果您的表实际上只有它们的名称有所不同,那么您将拥有的实体类将具有自己的表格规范,该类声明为扩展基本实体类,仅此而已。但是您可以选择具有自定义功能,例如上面的示例。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.