春天,冬眠。 JpaRepository接口和@MappedSuperclass共享状态属性

时间:2018-09-06 22:03:44

标签: java spring hibernate

我有一个基类

@MappedSuperclass
@Data
public class BaseEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Enumerated(EnumType.STRING)
    @Column(length = 20)
    private EntityStatus entityStatus;
    public BaseEntity() {
        entityStatus = EntityStatus.ACTIVE; 
    }
}

,并且我在项目中的每个Entity中都使用entityStatus。用于标记实体已禁用,而不是从表中删除。

public enum EntityStatus {
    ACTIVE, DISABLED;
}


@Entity
@Data
public class Event extends BaseEntity {
    private String name;
    private LocalDateTime start;
    private LocalDateTime end;
    private Boolean isTaxable;
}

现在,我可以将实体标记为“活动”或“禁用”,也可以在DAO上使用JpaRepository接口。 下一步,我只想对“已启用”实体进行操作。我该怎么办?

有了JpaRepository,我有很棒的CRUD(甚至更多)方法,但是看来我只需要重写它们或使用JpaRepository实现父级创建一些子对象。这实际上似乎是开销。

其他选项是使用几种方法创建服务     公共BaseEntity filterDisabled(BaseEntity baseEntity)     公共Collection filterDisabled(Collection实体)

每次从DAO层获得响应时,我都会在服务中调用此方法。这比较容易,但看起来很丑。

如何以最佳方式解决此问题?

0 个答案:

没有答案