На самом деле это не вопрос, но, возможно, это ошибка.
У меня есть массив объектов, и я выполняю цикл, чтобы сохранить его в базе данных:
for (ThresholdParams p : threshold.getThresholdParams()) {
if (!p.getInitialValue().isNaN() && !p.getStepValue().isNaN()) {
thresholdParamsRepository.save(p);
}
}
thresholdParamsRepository - это расширение интерфейса CrudRepository .
Когда массив не имеет недопустимого значения NaN, он работает нормально.Если я выполняю отладку, она останавливается каждый раз в предложении сохранения.
Но если 8-й (например) элемент массива имеет значение NaN, он выполняет весь цикл for без выполнения оператора if и вылетает, потому что mysqlисключение:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: неизвестный столбец «NaN» в «списке полей»
Я использовал точку останова для его отладкив предложении сохранения, но он пропустил его после первого сохранения.Я отлаживал все, и он выполняет все сохранения до 8-го числа, когда он потерпел крах.Это не зафиксировало изменения в базе данных.
Я решил это, удалив элементы со значениями nan, но я не знаю, является ли это ошибкой, связанной с java или данными весны jpa.
Это класс ThresholdParams:
@Entity
@Table(name="threshold_params")
public class ThresholdParams {
@EmbeddedId
private ThresholdParamsId thresholdParamsId;
@Column(name="step_value")
private Float stepValue;
@Column(name="initial_value", nullable= true)
private Float initialValue;
@ManyToOne
@JoinColumn(name="contextSourceId",insertable=false, updatable= false)
private ContextSource contextSource;
@Column(name="is_enabled", columnDefinition="bit default 1")
private boolean isEnabled;
public boolean getIsEnabled() {
return isEnabled;
}
public void setIsEnabled(boolean isEnabled) {
this.isEnabled = isEnabled;
}
@ManyToOne
@JoinColumn(name="thresholdId",insertable=false, updatable= false)
private Threshold threshold;
}