How to expose @EmbeddedId converters in Spring Data REST(如何在 Spring Data REST 中公开 @EmbeddedId 转换器)
问题描述
有些实体具有复合主键,并且这些实体在暴露时具有不正确的链接,在 _links 内的 URL 中具有类的完整限定名称
There are some Entities with composite Primary Keys and these entities when exposed are having incorrect Links having full qualified name of classes in URL inside _links
点击链接也会出现此类错误 -
Also clicking on links gives such errors -
org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type java.lang.String to type com.core.connection.domains.UserFriendshipId
我有 XML 配置的 Spring Repository 并启用了 jpa:repositories 并且 Respository 从 JpaRepository 扩展
I have XML configured Spring Repository with jpa:repositories enabled and Respository extending from JpaRepository
我可以让 Repository 实现 org.springframework.core.convert.converter.Converter 来处理这个问题.目前正在获取如下链接-
Can I make Repository implement org.springframework.core.convert.converter.Converter to handle this. Currently getting links as below -
_links: {
userByFriendshipId: {
href: "http://localhost:8080/api/userFriendships/com.core.connection.domains.UserFriendshipId@5b10/userByFriendId"
}
在 xml 配置中,我启用了 jpa:repositories 并在 Repositories 中启用了 @RestResource
in xml config , I have jpa:repositories enabled and @RestResource enabled inside Repositories
推荐答案
首先你需要得到一个可用的链接.目前,您的复合 ID 公开为 com.core.connection.domains.UserFriendshipId@5b10
.重写 UserFriendshipId
的 toString
方法应该足以生成像 2-3
这样有用的东西.
At first you need to get a usable link. Currently your composite id is exposed as com.core.connection.domains.UserFriendshipId@5b10
. It should be enough to override the toString
method of UserFriendshipId
to produce something useful like 2-3
.
接下来你需要实现一个转换器 以便 2-3
可以转换回 UserFriendshipId
:
Next you need to implement a converter so that 2-3
can be converted back to a UserFriendshipId
:
class UserFriendShipIdConverter implements Converter<String, UserFriendshipId> {
UserFriendShipId convert(String id) {
...
}
}
最后你需要注册转换器.您已经建议覆盖 configureConversionService
:
Finally you need to register the converter. You already suggested to override configureConversionService
:
protected void configureConversionService(ConfigurableConversionService conversionService) {
conversionService.addConverter(new UserFriendShipIdConverter());
}
如果您更喜欢 XML 配置,您可以按照 文档.
If you prefer a XML configuration you can follow the instructions in the documentation.
这篇关于如何在 Spring Data REST 中公开 @EmbeddedId 转换器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何在 Spring Data REST 中公开 @EmbeddedId 转换器


基础教程推荐
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- 降序排序:Java Map 2022-01-01
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- 设置 bean 时出现 Nullpointerexception 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- Java:带有char数组的println给出乱码 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01