Spring Data REST - "只能用属性信息翻译枚举!" PATCH包含一组枚举的实体时出错

时间:2017-09-07 18:48:38

标签: java spring-boot enums spring-data spring-data-rest

我在Spring Data REST项目(Spring Boot v.1.5.6)中设置了 enum traslation

spring.data.rest.enable-enum-translation=true

其中一个实体具有枚举设置属性。当我尝试修补此实体以增加集合中的枚举数量时 - 我发现了错误(!):

  

无法读取有效负载!嵌套异常是java.lang.IllegalStateException:只能用属性信息翻译枚举!

如果我使用相同数量的枚举(或更少)更新枚举集,则实体会正确更新。

无论如何,

PUT正确更新枚举设置。

如果我关闭enum traslation,那么PATCH将按预期工作。

有人知道如何解决这个问题吗?这是一个错误吗?

代码

@Entity
public class User {

    private String name;

    @Enumerated(EnumType.STRING)
    @CollectionTable(name = "roles", joinColumns = @JoinColumn(name = "user_id"))
    @ElementCollection
    private Set<Role> roles;

    // other stuff 
}

public enum Role {
    ADMIN, USER, POWER_USER
}

资源/ rest-messages.properties

# Enums
io.github.cepr0.enumtranslatingissue.Role.ADMIN=Admin
io.github.cepr0.enumtranslatingissue.Role.USER=User
io.github.cepr0.enumtranslatingissue.Role.POWER_USER=Power user

错误演示

GET http://localhost:8080/api/users/1
{
    "name": "user1",
    "roles": [
        "Admin",
        "User"
    ],
    "_links": {
        "self": {
            "href": "http://localhost:8080/api/users/1"
        },
        "user": {
            "href": "http://localhost:8080/api/users/1"
        }
    }
}

PATCH http://localhost:8080/api/users/1
{
  "roles": [
          "Admin",
          "User",
          "Power user"
      ]
}

{
    "cause": {
        "cause": null,
        "message": "Can only translate enum with property information!"
    },
    "message": "Could not read payload!; nested exception is java.lang.IllegalStateException: Can only translate enum with property information!"
}

Demo project

0 个答案:

没有答案