У меня есть объект «Среда», в котором есть набор параметров, хранящихся на карте, которые я отображаю для пользователя, чтобы он мог вносить изменения. Пользователь выбирает Среду через и редактирует параметры.
Параметры отображаются правильно, и мне удалось получить карту, отправленную формой, используя @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
Спасибо за любую помощь!