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

无法识别Spring Data REST @Idclass

钮刚洁
2023-03-14
问题内容

我有一个名为EmployeeDepartment的实体,如下所示

@IdClass(EmployeeDepartmentPK.class) //EmployeeDepartmentPK is a serializeable object
@Entity
EmployeeDepartment{

@Id
private String employeeID;

@Id
private String departmentCode;
---- Getters, Setters and other props/columns
}

我有一个如下定义的Spring Data Repository

@RepositoryRestResource(....)
public interface IEmployeeDepartmentRepository extends PagingAndSortingRepository<EmployeeDepartment, EmployeeDepartmentPK> {

}

此外,我注册了一个转换器,以将String转换为EmployeeDepartmentPK。

现在,对于一个由ID employeeID =“ abc123”和departmentCode =“
JBG”限定的实体,我希望在调用SDR接口时使用的ID为abc123_JBG。例如,http:// localhost /
EmployeeDepartment /
abc123_JBG
应该获取我的结果,确实可以。

但是,当我尝试使用PUT保存实体时,Spring Data
Commons的BasicPersistentEntity类中可用的ID属性的DepartmentCode值为abc123_JBG。错了
我不确定这是否是预期的行为。

请帮忙。

谢谢!


问题答案:

当前,Spring Data
REST仅支持由单个字段表示的复合键。这实际上意味着仅@EmbeddedId受支持。我已提交DATAJPA-770进行修复。

如果您可以切换到@EmbeddedId该语言,则仍然需要向Spring Data
REST讲授您要在URI中表示复杂标识符的方式,以及如何将路径段转换回id类型的实例。为此,实现一个BackendIdConverter并将其注册为Spring
bean。

@Component
class CustomBackendIdConverter implements BackendIdConverter {

  @Override
  public Serializable fromRequestId(String id, Class<?> entityType) {

    // Make sure you validate the input

    String[] parts = id.split("_");
    return new YourEmbeddedIdType(parts[0], parts[1]);
  }

  @Override
  public String toRequestId(Serializable source, Class<?> entityType) {

    YourIdType id = (YourIdType) source;
    return String.format("%s_%s", …);
  }

  @Override
  public boolean supports(Class<?> type) {
    return YourDomainType.class.equals(type);
  }
}


 类似资料:
  • 我有以下序列

  • 我不确定这是否是一个与我没有这台计算机的管理权限有关的问题。任何帮助,以便我可以进一步排除故障,将非常感谢! 谢谢

  • 问题内容: 我使用,当我得到 我删除了构建路径,然后又做了 ,仍然是同样的错误。 问题答案: 该代码不是Java SE的一部分,因此这些类将不在JRE中。您需要找到并下载包含这些类的JAR文件,然后将其添加到Eclipse构建路径中。 (可以在此处下载JAR的一个地方,但是如果此链接中断,可以轻松进行自己的搜索。请转到Maven Central或findjar。)

  • 问题内容: 我有一个jimfs(内存文件系统中的Google)从字节数组中创建的zip文件。当尝试使用打开该文件时,出现错误,提示无法识别该提供程序。我的代码如下: URI类似于:。 堆栈跟踪为: jimfs未与一起列出。它位于分别与 for 相比的单独的类加载器中。 提供者的打印如下: 我尝试基于jimfs ClassLoaderTest示例手动设置类加载器,但没有成功。我在Linux上运行。

  • 问题内容: 有时,我会在页面上寻找可能存在或不存在的元素。我想用/尝试/捕获这种情况,当某些HTML元素不存在时,selenium会抛出该异常。原始例外: 具有讽刺意味的是,它不会让我捕捉到之前抛出的异常吗?代码在这里: 错误在这里: 谷歌搜索/文档整理一无所获…让我感到奇怪的是,selenium可以引发异常但不能捕获它。 问题答案: 您需要先导入异常 然后你可以参考它

  • 问题内容: 我的Java代码有问题。我正在尝试加密文件。但是,当我运行Java代码时,我得到“ java.security.InvalidKeyException:无效的AES密钥长度:162个字节”。 这是代码: 该错误发生在“ KeyPairGenerator keyGen = KeyPairGenerator.getInstance(“ AES”);“行。 问题答案: AES是一种对称算法,

  • 问题内容: 我正在尝试通过使用摩卡咖啡和酶来更新单元测试。我正在测试的代码是在ES6中,使用JSX和React。 我无法在我的测试脚本中在JSX上获得“摩卡”错误。 测试脚本: }); gulpfile.js: 输出为: 我通过通过browserify运行源代码并将其放在测试目录中来证明它不是mocha / enzyme本身,从而成功运行了该测试。我的问题只是试图正确解决大口魔术。 问题答案: 对

  • 我正在使用Selenium WebDriver从下拉列表中获取值。不幸的是,我无法获取它,因为我的代码无法识别xpath。 这是我的代码: 问题在于第1行(WebElement选择器)。在输出中,我得到如下结果: 线程“main”组织中出现异常。openqa。硒。InvalidSelectorException:无法计算xpath表达式“id('search”)/x:fieldset/x:tabl