JPA没有使用Converter类更新列

时间:2017-03-25 01:18:26

标签: java mysql jpa

我使用Converter类在mySQL中将复杂类存储为JSON文本。当我添加一个新实体时,Converter类按预期工作。但是,当我更新实体时,复杂类中的数据不会在数据库中更新,但会在内存中更新。其他属性(如Lat和Long)会更新。我放在 convertToDatabaseColumn 方法的断点,它在更新时没有触发。

对象类

@Converter (autoApply=true)
public class ProjectPropertyConverter implements AttributeConverter<ProjectProperty, String> {

    @Override
    public String convertToDatabaseColumn(ProjectProperty prop) {
        try {
            ObjectMapper mapper = new ObjectMapper();
            String jsonString = mapper.writeValueAsString(prop);
            return jsonString;
        } catch (Exception e) {
            System.out.print(e.toString());
            return null;
        }

    }

    @Override
    public ProjectProperty convertToEntityAttribute(String jsonValue) {
        try {
            ObjectMapper mapper = new ObjectMapper();
            ProjectProperty p = mapper.readValue(jsonValue, ProjectProperty.class);

            if(p.getProjectImgs().isEmpty())
            {
                p.setHasImages(Boolean.FALSE);
            }
            else
            {
                p.setHasImages(Boolean.TRUE);
            }          
            return p;
        } catch (Exception e) {
            System.out.print(e.toString());
            return null;
        }
    }
}

属性转换器类

public void modifyEntity(Object entity, String query, HashMap params) {
    try {
        tx.begin();
        em.flush();
        tx.commit();

    } catch (Exception e) {
        e.toString();
    }
}

更新数据库的方法

{{1}}

0 个答案:

没有答案