首页 > 解决方案 > 基本实体自定义列

问题描述

我有基本实体

    @MappedSuperclass
    public class BaseEntityCore implements Serializable {
    
        @CreatedBy
        @Column(name = "olusturan", /* nullable = false, */ length = 50, updatable = false)
        private String createdBy;
    
        @CreatedDate
        //@NotNull
        @Column(name = "olusturma_tarihi", nullable = false, updatable = false)
        private LocalDateTime createdDate ;
    
        @LastModifiedBy
        @Column(name = "guncelleyen", length = 50)
        private String lastModifiedBy;
    
        @LastModifiedDate
        @Column(name = "guncelleme_tarihi")
        private LocalDateTime lastModifiedDate;
    
        @Column(name = "aktif")
        private int aktif;

// getter and setter

一个实体扩展了这个基础实体,比如

@Entity
@Table(name = "foo")
@EntityListeners(value = { AbstractEntityListenerCore.class })
public class foo extends BaseEntityCore {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(name="foo_name")
private String fooName;
//getter and setter
}

与春天,春天jpa。我也有实体回购

public interface FooRepository extends JpaRepository<Foo, Long> {
Optional<Foo> findByFooName(String name);
}

现在我可以用 foo.setAktif(1) 保存实体。保存 foo 后,我在表 aktif 上看到的是 1。之后我运行 findByFooName 方法。这会转动对象,但该对象有 2 个 aktif 属性。第一个是 aktif,值为 1,另一个是 BaseEntityCore.aktif,值为 0。我使用 if 子句检查

if(foo.getAktif()==1){
//do something
}
else {
//throws exception;
}

我不明白为什么总是抛出异常。

标签: javaspringjpaentitybase

解决方案


你不需要你的 if else 子句。只需始终搜索具有“Aktif”== 1 的实体。

所以用另一种方法扩展你的 repo 类

Optional<Foo> findByFooNameAndAktif(String name, int aktif);   

并且只搜索你想要的“aktif”。

但是您的问题是关于“Aktif”的两个属性,对吗?


推荐阅读