#java #spring #jpa #entity #base
#java #spring #jpa #сущность #основание
Вопрос:
у меня есть базовая сущность, подобная
@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
}
с spring, spring 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;
}
я не могу понять, почему всегда возникает исключение.
Ответ №1:
Вам не нужно ваше предложение if else. Просто всегда ищите объекты с «Aktif» == 1.
Итак, расширьте свой класс репозитория другим методом
Optional<Foo> findByFooNameAndAktif(String name, int aktif);
и ищите только «aktif», который вы хотите.
Но ваш вопрос касается 2 свойств «Aktif», верно?
Комментарии:
1. на самом деле я могу изменить метод repo и добавить andAktif, но проблема в 2 одинаковых свойствах. также getAktif() возвращает 0, а не 1. почему? как я могу выбрать правильный?