我希望将多种语言添加到我的数据库中,其中包含不同的列:
id
description
description_es
description_fr
description_ge
price
并且只返回译文
class Product(val id: Long, val description: String, val price: Float)
我如何告诉Spring数据使用哪一种描述列以便它将对象返回给我?
唯一发生在我身上的事情是拥有具有继承的类,并在每个类中使用@Column作为描述,但这迫使我有4个方法,每个方法都有一个类型,并使用一个开关来选择调用哪个类,这是不优雅的,不具有可伸缩性。
有任何方法将列映射传递到存储库吗?
发布于 2022-09-27 18:49:38
一个更好的桌子设计应该是这样的:
desc_id | description | lang
1 | water | eng
1 | agua | sp
1 | eau | fr
...
这是一种更加规范化的设计,在这种设计中,每种描述/价格元组分别出现在每种语言中。现在,如果您想要给定语言和描述的价格,您可以简单地查询表。
发布于 2022-09-27 19:19:11
也许您想要使用Spring数据JPA的基于类或动态投影。下面是一些例子
public interface ProductRepository extends JpaRepository<Product, Long> {
// ...
ProductEsDto findById(Long Id);
ProductFrDto findById(Long Id);
ProductGeDto findById(Long Id);
<T> T findById(Long Id, Class<T> type);
}
这里是这个功能能够工作的要求,我引用了这个参考链接,让您看更多的细节。
要使投影类与存储库接口协同工作,其构造函数的参数名称必须与根实体类的属性匹配。
https://stackoverflow.com/questions/73875638
复制