Могу ли я сопоставить несколько таблиц базы данных с уникальным объектом, используя JPA? - PullRequest
0 голосов
/ 09 марта 2020

Я пытаюсь добавить многоязычность в поля description и title одной из моих сущностей, но безуспешно. Моя сущность похожа на приведенную ниже, и моя база данных MySQL:

@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "project")
public class ProjectEntity implements Serializable {

    @Id
    @Column(name="id")
    private Integer id;
    @Column(name="team_size")
    private Integer teamSize;
    @Column(name="description")
    private String description;
    @Column(name="title")
    private String title;
    @OneToMany
    private List<DetailsEntity> details;
}

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

@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "project_details")
public class ProjectDetails implements Serializable {

    @Id
    @Column(name="id")
    private Integer id;
    @Column(name="title")
    private String title;
    @Column(name="description")
    private String description;
    @Column(name="language")
    private String language;
    @Column(name="project_id")
    private Integer projectId;
}

Я хотел бы иметь возможность что-то делать с запросами репозитория JPA, например:

@Repository
public interface ProjectEntityRepository extends JpaRepository<ProjectEntity, Integer> {

    @Query("select p from ProjectEntity p left outer join ProjectDetails d on p.id=d.project_id and d.language=:language")
    List<ProjectEntity> findAllForLanguage(String language);
}

Любая идея о том, как изменить часть этого, чтобы вернуть сущность Project со значениями только 1 ProjectDetails?

Спасибо

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