如何在 Spring Data REST 中公开 @EmbeddedId 转换器

2024-08-24Java开发问题
1

本文介绍了如何在 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.重写 UserFriendshipIdtoString 方法应该足以生成像 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 UserFriendshipIdto 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 转换器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

如何使用 JAVA 向 COM PORT 发送数据?
How to send data to COM PORT using JAVA?(如何使用 JAVA 向 COM PORT 发送数据?)...
2024-08-25 Java开发问题
21

如何使报表页面方向更改为“rtl"?
How to make a report page direction to change to quot;rtlquot;?(如何使报表页面方向更改为“rtl?)...
2024-08-25 Java开发问题
19

在 Eclipse 项目中使用西里尔文 .properties 文件
Use cyrillic .properties file in eclipse project(在 Eclipse 项目中使用西里尔文 .properties 文件)...
2024-08-25 Java开发问题
18

有没有办法在 Java 中检测 RTL 语言?
Is there any way to detect an RTL language in Java?(有没有办法在 Java 中检测 RTL 语言?)...
2024-08-25 Java开发问题
11

如何在 Java 中从 DB 加载资源包消息?
How to load resource bundle messages from DB in Java?(如何在 Java 中从 DB 加载资源包消息?)...
2024-08-25 Java开发问题
13

如何更改 Java 中的默认语言环境设置以使其保持一致?
How do I change the default locale settings in Java to make them consistent?(如何更改 Java 中的默认语言环境设置以使其保持一致?)...
2024-08-25 Java开发问题
13