当前位置: 首页 > 面试题库 >

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

乐正涵忍
2023-03-14
问题内容

有一些带有复合主键的实体,这些实体在公开时使用了不正确的链接,这些链接在_links内的URL中具有类的全限定名称

同样点击链接也会出现此类错误-

org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type java.lang.String to type com.core.connection.domains.UserFriendshipId

我已经用jpa:repositories启用了XML配置的Spring Repository,并且从JpaRepository扩展了Repository

我可以使存储库实现 org.springframework.core.convert.converter.Converter
来处理此问题。目前获得的链接如下-

_links: {
userByFriendshipId: {
href: "http://localhost:8080/api/userFriendships/com.core.connection.domains.UserFriendshipId@5b10/userByFriendId"
}

在xml config中,我启用了jpa:repositories并在Repositories中启用了@RestResource


问题答案:

首先,您需要获得一个可用的链接。目前,您的复合ID显示为com.core.connection.domains.UserFriendshipId@5b10。覆盖产生类似有用东西的toString方法应该足够了。UserFriendshipId``2-3

接下来,您需要实现一个转换器,以便2-3可以将其转换回UserFriendshipId

class UserFriendShipIdConverter implements Converter<String, UserFriendshipId> {

  UserFriendShipId convert(String id) {
    ...
  }
}

最后,您需要注册转换器。您已经建议覆盖configureConversionService

protected void configureConversionService(ConfigurableConversionService conversionService) {
   conversionService.addConverter(new UserFriendShipIdConverter());
}

如果您更喜欢XML配置,则可以按照文档中的说明进行操作。



 类似资料:
  • 问题内容: 有一些带有复合主键的实体,这些实体在公开时使用了不正确的链接,这些链接在_links内的URL中具有类的全限定名称 同样点击链接也会出现此类错误- 我已经用jpa:repositories启用了XML配置的Spring Repository,并且从JpaRepository扩展了Repository 我可以使存储库实现 org.springframework.core.convert.

  • 我不想公开我的模型类(jpa实体),而是用不同的数据传输对象(DTO)公开它们属性的不同子集。这个想法是不切实际的 例子: 实体: JpaRepository: DTO: D到积垢积存物: 实施: 一般: 在本例中,我想用Spring数据REST公开GroupDtoDao。 在其他bean中,我可以自动连接GroupDto和GroupDto,所以两者都由Spring的上下文管理。如果我不使用@Re

  • 我有以下公钥(作为示例): 我需要能够将其转换为可以插入ssh known_hosts文件的格式。例如: 谢了!

  • 问题内容: 正如一位评论者所述,您必须将以km为单位的半径转换为度数…但是如何?我想这是个快速公式,但对我来说却是希腊语。我将不胜感激任何指针。 问题答案: 答案可能取决于地球上的位置。在赤道附近,1km大约等于纬度和经度的0.008度(1 km / 40,000 km * 360度),但是在极点附近,1km大约等于纬度的0.008度,但是可能是许多度的经度。(如果您距离极点1公里,则向西行驶1公

  • 问题内容: 我是Java的新手,想知道double转换为int cast如何工作吗?我知道,只需将低32位转换为int就很容易了,但是将double(64位)转换为int(32位)呢?来自二进制的double中的那64位是Double- precision浮点格式(Mantissa),那么它如何在内部转换为int? 问题答案: 所有这些都记录在JLS的5.1.3节中。 第一步,将浮点数转换为lon

  • 问题内容: 我有一个简单的Entitly类,(和单独类中的字段)。然后,我使用Spring Data()访问数据库(MySql),使用常规ID,查询可以正常工作,无论是Spring生成的查询还是我自己编写的查询。与我没有设法创建正确的查询。我想做的是选择所有id(发生某些情况的EmbeddedId字段之一),这里有一些代码示例,也许有人会知道如何解决它。 实体类: EmbeddedId类: 和存储