Внутреннее объединение с использованием JpaRepository без написания запроса - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть определенные сущности (которые я связал через Hibernate), которые я хотел бы запросить из моей базы данных; без необходимости явной записи запроса.

MyParent. java

@Entity
@Table(name="myparent")
public class MyParent {

    @Id
    @SequenceGenerator(name = "myparent_id_seq", sequenceName = "myparent_id_seq", allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "myparent_id_seq")
    private Long id;

    @OneToOne(mappedBy = "myParent", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    private MyChild myChild;

    public void linkChild(MyChild myChild) {
        this.myChild = myChild;
        myChild.setParent(this);
    }

    // rest of code

}

MyChild. java

@Entity
@Table(name="myChild")
public class MyChild {

    @Id
    @SequenceGenerator(name = "mychild_id_seq", sequenceName = "mychild_id_seq", allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "mychild_id_seq")
    private Long id;

    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "myparent_id")
    private MyParent myParent;

    // rest of code

}

Теперь я хотел бы сделать:

select * from myparent p 
inner join mychild c on p.id = c.myparent_id;

-- basically I want to get all instances of MyParent where MyChild is not null

Что вернуло бы мне экземпляр MyParent, который я мог бы затем проанализировать, используя мои методы получения и установки. Все, что я нашел в Интернете, - это явно написать запрос.

Есть ли способ сделать это?

Ответы [ 2 ]

2 голосов
/ 26 февраля 2020

Вы можете сделать это следующим образом:

findByMyChildIsNotNull ()

См. документы , есть и другие ключевые слова, которые могут оказаться полезными .

2 голосов
/ 26 февраля 2020

Вы можете использовать jpql:

@Query("select mp from MyParent mp where mp.myChild is not null")

Или вы можете использовать собственный запрос

@Query(value = "select p.* from myparent p inner join mychild c on p.id = c.myparent_id", nativeQuery = true)
...