Как получить значение из таблицы, на которую ссылается внешний ключ в Hibernate? - PullRequest
0 голосов
/ 15 января 2019

У меня есть две таблицы в моей базе данных: автор и книга. Вот структура для них обоих:

Книжный стол:

@Entity
public class Book {
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    private String title;

    @ManyToOne
    private Author author;

    ...getters and setters...
}

Автор таблицы:

@Entity
public class Author {
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    private String name;

    ...getters and setters
}    

Я хотел бы получить автора определенной книги по названию книги. Я достиг этого с помощью этой команды sql на терминале: select author.name as author from author right join book on author.id = book.author_id where book.title='Some title';. Как мне структурировать запрос в моем коде, чтобы добиться этого?

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Думаю, это было намного проще, чем я думал. Вместо того, чтобы использовать сложный запрос, я просто выбрал книгу по ее названию, а затем выбрал автора по его идентификатору, вот так, и он работал просто отлично:

Query query = manager.createQuery("select b from book b where b.title = :myTitle")
            .setParameter("myTitle", "Some title");

Book book = (Book) query.getSingleResult();
Author author = manager.find(Author.class, book.getAuthor().getId());

System.out.println(author.getName());
0 голосов
/ 15 января 2019

Это будет эквивалентный запрос

select a.name as author from author a right join book b where b.title = 'Some title'

в коде

entityManager.createQuery("select a.name as author from author a right join book b where b.title = ? ").setParameter(1, "Some title");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...