当前位置: 首页 > 知识库问答 >
问题:

使用spring data jpa实现关系的条件加载

谷梁振
2023-03-14
@Entity
@Table(name = "province")
public class Province {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @ManyToOne
    @JoinColumn(name = "country_id", nullable = false)
    private Country country;

    @OneToMany
    @JoinColumn(name = "province_id")
    private List<ProvinceTranslation> translations;
}

@Entity
@Table(name = "province_translation")
public class ProvinceTranslation {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private String name;

    private Language language;

    @ManyToOne
    @JoinColumn(name = "province_id")
    private Province province;
}

共有1个答案

蓝恩
2023-03-14

在这种情况下,似乎需要编写一点JPA查询。

因为缺少CountryTranslation类,所以我将重点放在Pavinion类上。

语言类也是未知的,可能这是一个枚举类,如下所示:

    public interface ProvinceRepository extends CrudRepository<Province, Long> {
    ...
    }

要获得具有特定翻译的所有省份的列表,可以在ProvinceRepository中声明如下函数:

    @Query("SELECT new org.your.package.goes.here.Province(p.id, p.country, pt.name) FROM Province p inner join p.translations pt where pt.language = ?1")
    List<Province> findAllWithTranslation(Language language);

要使其工作,必须存在一个接受三个参数ID、country、name的constuctor。可以将name参数设置为Pavinion类的新translation属性,分别设置为创建的Pavinion对象。如果language类确实是enum类,则必须将@enumerated注释添加到language字段中。

然而,我确信,翻译字符串的提供应该在国际化库(i18n)的帮助下做得更好。

 类似资料:
  • 问题内容: 我不确定如何描述这个问题,所以我认为举个例子是问我问题的最好方法: 我有两个表具有多对多关系: 驾驶执照<-> LicenceClass LicenceClass是“汽车”,“摩托车”和“中型刚性”之类的东西。 使用Hibernate Criteria,如何找到同时具有“汽车”和“摩托车” LicenceClasses的所有许可证? 2008年12月11日更新我发现可以使用自定义Res

  • 问题内容: 我不确定如何描述这个问题,所以我认为举个例子是问我问题的最好方法: 我有两个表具有多对多关系: 驾驶员许可证<->许可证类别 LicenceClass是诸如“汽车”,“摩托车”和“中型刚性”之类的东西。 使用Hibernate Criteria,如何找到同时具有“汽车”和“摩托车” LicenceClasses的所有许可证? 2008年12月11日更新我发现可以使用自定义ResultT

  • 我正在使用100个实体(使用JHipster)设置一个新的Spring Boot API,我的问题是:鉴于我有一组存储库层方法,我希望我的所有存储库都能够调用这些方法。 我已经尝试制作所有接口来扩展('RepositoryQuery'是我默认的自定义接口名称后缀),然后使用特定于实体的类。请注意,所有的类扩展了一个泛型实现类,名为。 请注意,给定正则表达式中的“.*”代表我的持久实体集中的任何实体

  • 我有一个实体,它与

  • 本文向大家介绍使用 iisext.vbs 添加应用程序依存关系的实现方法,包括了使用 iisext.vbs 添加应用程序依存关系的实现方法的使用技巧和注意事项,需要的朋友参考一下 应用到: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1 可以使用命令行脚本 iisext.vbs(存储在 system

  • 如何用雄辩的关系实现以下目标?帖子可以由多个用户加书签,每个用户只能给任何给定的帖子加一次书签(如果删除书签,记录将被删除)。我想检索所有的帖子与指标是否当前登录的用户有书签他们。