Установить карту, сгенерированную из формы jsp, в базу данных с помощью весенней загрузки - PullRequest
0 голосов
/ 28 июня 2019

У меня есть объект «Среда», в котором есть набор параметров, хранящихся на карте, которые я отображаю для пользователя, чтобы он мог вносить изменения. Пользователь выбирает Среду через и редактирует параметры.

Параметры отображаются правильно, и мне удалось получить карту, отправленную формой, используя @RequestParam. Но когда я пытаюсь заменить исходный ключ, значения на новые из отправленной формы, я получаю исключение java.util.TreeMap не может быть приведен к ..

Мой объект окружающей среды:

@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@Table(name = "environment")
public class Environment implements Serializable, Cloneable {

    private static final long serialVersionUID = -6347094896871928639L;

    private long id;

    @ManyToOne
    private String code;

    private String name;

    private Set<String> terminals = new TreeSet<String>();

    @Id//(generate = GeneratorType.AUTO)
    @GeneratedValue
    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    @Column(length = 30)
    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    @Column(length = 50)
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}`

Здесь установлены параметры:

    @Entity
public class PropertiesEnvironment extends Environment implements Serializable {

    private PropertiesConfiguration propertiesConfiguration = new PropertiesConfiguration();

    public PropertiesEnvironment() {
    }

    private Long lastPurgeTimestamp;

    @Column
    public Long getLastPurgeTimestamp() {
        return lastPurgeTimestamp;
    }

    public void setLastPurgeTimestamp(Long lastPurgeTimestamp) {
        this.lastPurgeTimestamp = lastPurgeTimestamp;
    }


  @Column(length=500000)
  @Lob
  @Type(type = "serializable")
  public Map<String, Serializable> getProperties() {
        return propertiesConfiguration.getProperties();
  }

    public void setProperties(Map<String, Serializable> properties) {
        propertiesConfiguration.setProperties(properties);
    }

    public int getIntValue(String tag, String defaultValue) {
        return propertiesConfiguration.getIntValue(tag, defaultValue);
    }

    public int getIntValue(String tag) {
        return propertiesConfiguration.getIntValue(tag);
    }

    public boolean getBooleanValue(String property, String defaultValue) {
        return propertiesConfiguration.getBooleanValue(property, defaultValue);
    }

    public boolean getBooleanValue(String tag) {
}
        return propertiesConfiguration.getBooleanValue(tag);
    }

    public void setBooleanValue(String tag, boolean value) {
        propertiesConfiguration.setBooleanValue(tag, value);
    }

    public String getStringValue(String tag) {
        String v = propertiesConfiguration.getStringValue(tag);
        return v == null ? "" : v;
    }

    public String getStringValue(String tag, String value) {
        return propertiesConfiguration.getStringValue(tag, value == null ? "" : value);
    }

    public void setStringValue(String tag, String value) {
        propertiesConfiguration.setStringValue(tag, value);
    }


    public void setIntValue(String tag, int value) {
        propertiesConfiguration.setIntValue(tag, value);
    }
}

Репозиторий

    @Repository
public interface PickingParametersRepository extends CrudRepository<PropertiesEnvironment, String> {
    @Query("SELECT E.properties FROM Environment E WHERE E.code = :code")

    PropertiesEnvironment findByCode (@Param("code") String code);

Мой контроллер

    @RequestMapping(value = "success", method = RequestMethod.POST)
public @ResponseBody
PropertiesEnvironment save(@RequestParam Map<String, Serializable> myParam) {
    PropertiesEnvironment propertiesEnvironment = pickingParametersRepository.findByCode(selected);
    propertiesEnvironment.setProperties((Map<String, Serializable>) myParam);
    System.out.println("ok");
    return propertiesEnvironment;
}

Исключение генерируется, когда я устанавливаю свойства: java.lang.ClassCastException: java.util.TreeMap не может быть приведен к com.vocognition.environment.PropertiesEnvironment

Спасибо за любую помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...