Как запросить / вызвать @JoinTable аннотацию гибернации из Java - PullRequest
1 голос
/ 24 мая 2019

Я создал две таблицы: Project и Resource. Существуют следующие классы сущностей:

    @Entity
@Table(name="project")
public class Project {

    @Id
    private int projectId;
    private String name;
    private String createdBy;
    .
    .
    .
}

@Entity
@Table(name="resource")
public class Resource {

    @Id
    private int resourceId;
    private String name;
    private String createdBy;
    private Set<Project> projects;

    @JoinTable(name="project_resources",joinColumns={@JoinColumn(name="project_id")},
    inverseJoinColumns={@JoinColumn(name="resource_id")})
    public Set<Project> getProjects() {
        return projects;
    }

    public void setProjects(Set<Project> projects) {
        this.projects = projects;
    }

    .
    .
}

некоторые значения базы данных:

resource_id, project_id
r-123-abcop, p-qweer033
r-153-adetr, p-qweer033
r-460-uerty, p-qweer033
r-087-xcvbx, p-qweer033
r-askf-44uj, p-euyru85r
r-6yhe-hefn, p-euyru85r
r-er7u-ufgm, p-euyru85r
r-ehw8i-nfm, p-euyru85r

(Нет класса сущностей для таблицы project_resources, таблица Project не будет иметь зависимости таблицы ресурсов, но Resource будет иметь Project, как вы можете видеть из классов)

Теперь, если вы хотите узнать, какие ресурсы присутствуют в проекте, я должен сначала получить все ресурсы, а затем отфильтровать ресурсы по идентификатору проекта. Но если я смогу запросить эту таблицу project_resources, я смогу легко получить эти значения.

Я хочу сгенерировать запрос наподобие

select * from project_resources where project_id = '';

Как заставить класс hibernate понять, как выбрать эту таблицу project_resources? Или какое-нибудь лучшее решение, как получить ресурсы на основе projectId?

Ответы [ 2 ]

0 голосов
/ 24 мая 2019

Попробуйте этот именованный запрос

@NamedQuery(
            name = "getResourcesByProjectid",
            query =select r from Resource r left join r.projects p where p.projectId = ?1
) 
0 голосов
/ 24 мая 2019

вам не нужно создавать таблицу project_resources. С JPA, отображающим многие на многие, вы можете использовать запрос в классе project. это будет автоматическое сопоставление с ресурсом. Вы можете ссылаться на ссылку https://www.baeldung.com/jpa-many-to-many

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...