SpringBoot / Hibernate上模型关系的动态where子句

时间:2019-07-18 08:23:57

标签: spring hibernate spring-data-jpa spring-data hibernate-mapping

首先,对于Spring EcoSystem来说还很新...仍然在学习。所以这是我的问题...

问题

我有一个名为destinationsdestination_translations的表,用于存储有关目的地的翻译

+----+------+------------+------------+
| id | code | created_at | updated_at |
+----+------+------------+------------+

和我的destination_translations表

+-------------------------------------------------------------------+
| id | destination_id | locale | name | created_at | updated_at     |
+-------------------------------------------------------------------+

我需要使用父模型访问我的所有翻译,如下所示。可以,但是可以获取与destination_id相关的所有翻译

@Data
@Entity
@EqualsAndHashCode(callSuper = true)
@Table(name = "destinations", uniqueConstraints = @UniqueConstraint(columnNames = "code"))
public class Destination extends BaseModel {

    private String code;

    private long latitude;

    private long longitude;

    @OneToMany(fetch = FetchType.LAZY)
    @JoinColumn(name = "destination_id")
    private List<DestinationTranslation> translations;

    @OneToMany(fetch = FetchType.LAZY)
    @JoinColumn(name = "model_id")
    @Where(clause = "model_namespace='App\\\\Models\\\\Destination' AND meta_type='IMAGE'")
    private List<MetaDetail> photos;

}

每个请求都得到一个Accept-Header,因为我的数据库具有所有所需的翻译,因此我需要将翻译解析为客户端传递给我的任何语言。

例如,如果我收到一个ja-jp的{​​{1}}请求的Accept-Header来获取第一个目的地,那么根据accept标头,我应该只解析GET的所有翻译(日语)

ja-jp

接受语言应与destination_translations表的语言环境匹配

我可以使用 { "id": 1, "code": "SIG", "translations": [ // array of Japanese translated data ] } 批注编写自定义查询,但是我有许多这些表的功能相同。

我尝试了 @Query() ,但它仅适用于静态。如果有人能指出正确的方向,那将是不胜感激的。

0 个答案:

没有答案