坚持JPA枚举列表,转换器不起作用

时间:2018-11-14 12:24:00

标签: java jpa spring-data-jpa

我正在尝试使用JPA和hibernate将枚举列表保留在数据库中。

我的模型如下:

protected void GrdOverview_RowCreated(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.Header)
    {
        foreach (TableCell tc in e.Row.Cells)
        {
            if (tc.HasControls())
            {
                // search for the header link
                LinkButton lnk = (LinkButton)tc.Controls[0];

                string sortDir = ViewState["SortDirection"] != null ? ViewState["SortDirection"].ToString() : "ASC";
                string sortBy = ViewState["SortExpression"] != null ? ViewState["SortExpression"].ToString() : "---";

                if (lnk != null && sortBy == lnk.CommandArgument)
                {
                    string sortArrow = sortDir == "ASC" ? " ▲" : " ▼";
                    lnk.Text += sortArrow;
                }
            }
        }
    }
}

我想将@Id @Column String id; @Column @Convert(converter = EnumConverter.class) List<Enum> listEnum; 的列表保留为enum,并使用一个转换器(String)来存储它并从数据库中读取它。

我的转换器使用Jackson进行序列化和反序列化。示例:

EnumConverter

我遇到的问题是将它存储得很好,但是当我尝试获取代码时,它像下面这样返回一个大小为1(类型@Converter(autoApply = true) public class EnumListConverter implements AttributeConverter<List<Enum>, String> { private final ObjectMapper objectMapper = new ObjectMapper(); @Override public String convertToDatabaseColumn(final List<Enum> list) { try { return objectMapper.writeValueAsString(list); } catch (JsonProcessingException e) { return ""; } } @Override public List<Enum> convertToEntityAttribute(final String list) { try { return Arrays.asList(objectMapper.readValue(list, Enum[].class)); } catch (IOException e) { return new ArrayList<>(); } } } )的数组,而不是一个数组。大小3:

ArrayList

我正在使用带有简单本机查询的"["Value1","Value2","Value3"]"

CrudRepository

有人知道我在想什么吗?我想使用三个值而不是一个值的SELECT list from the entity; 。当我调试转换器时,它做对了,所以问题必须在转换之后。

0 个答案:

没有答案