JpaRepository findAll () не будет возвращать строки с пустыми полями - PullRequest
1 голос
/ 19 октября 2019

У меня есть JPA-репозиторий, например, так:

@Repository
public interface DocumentTagsViewRepository extends JpaRepository<DocumentTagsView, Long>, JpaSpecificationExecutor<DocumentTagsView> {

И такой объект:

@Entity
@IdClass(DocumentTagsView.class)
@Table(name="document_tags_view", schema="pdf_processing")
public class DocumentTagsView implements Serializable {

    private static final long serialVersionUID = -8222170971385430496L;

    @Id
    @Column
    String vid;

    @Column(nullable=true)
    Long did;

    @Column
    Long tid;

    @Column
    String text;

public DocumentTagsView () {}

public String getVid() {
    return vid;
}

public void setVid(String vid) {
    this.vid = vid;
}

public Long getDid() {
    return did;
}

public void setDid(Long did) {
    this.did = did;
}

public Long getTid() {
    return tid;
}

public void setTid(Long tid) {
    this.tid = tid;
}

public String getText() {
    return text;
}

public void setText(String text) {
    this.text = text;
}

@Override
public String toString() {
    return "DocumentTagsView [vid=" + vid + ", did=" + did + ", tid=" + tid + ", text=" + text + "]";
}

В моей таблице 5 записей, две с нулевыми значениями в столбце did:

vid                                     did     tid text
a31a1aa8-f29a-11e9-ba9d-d8cb8abfa8f6    2       6   A
a31a1a79-f29a-11e9-ba9d-d8cb8abfa8f6    2       4   B
a31a1ad2-f29a-11e9-ba9d-d8cb8abfa8f6    2       7   C
a31a19e8-f29a-11e9-ba9d-d8cb8abfa8f6    (null)  1   D
a31a1a57-f29a-11e9-ba9d-d8cb8abfa8f6    (null)  3   E

Когда я выполняю DocumentTagsViewRepository.findAll (), я получаю список из 5 позиций, но последние два равны нулю. Я ожидал получить два объекта DocumentTagsView в этих позициях, но со значением did null.

Как получить все пять записей в моем списке findAll?

Ответы [ 2 ]

1 голос
/ 19 октября 2019

вы используете @IdClass аннотацию, которая используется для составного PK, а jpa игнорирует нулевое значение.

0 голосов
/ 19 октября 2019

Кроме того, вам может потребоваться создать геттеры и сеттеры для вашей сущности. Не уверен, что Hibernate или какой-либо другой ORM, который вы используете, будут знать, как заполнить сущность в противном случае.

...