У меня странная проблема, когда отображение JPA не работает при преобразовании в метку времени, но значение, которое оно использует, представляет собой целую строку, а не одну переменную.
Ошибка:
java.sql.SQLException: Value '1988├╗ ├╗├╗├╗├╗├╗├╗0
07 1234567 wk├╗0├╗├╗├╗├╗├╗ ' can not be represented as java.sql.Timestamp
где значение представляет собой всю строку, причем большинство плохих символов являются нулями. В настоящее время журнал отладки не дает мне многого, и я не уверен, является ли это ошибкой в моем классе сопоставления, проблемах сортировки или чем-то еще.
Рабочая среда MySQL правильно считывает всю информацию из таблицы. Запуск mysql из команды выводит все данные правильно. Ничего особенного не показывать.
Упрощенная версия моего класса сопоставления:
@Entity
@Audited
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
public class PersonSundry {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@NotNull
@OneToOne(fetch=FetchType.LAZY)
@JoinColumn(name="person_id", unique=true)
private Person person;
@ManyToOne(fetch=FetchType.EAGER)
private Lookup1 lookup1;
@ManyToOne(fetch=FetchType.EAGER)
private Lookup2 lookup2;
@Lob
private String backgroundInfo;
private LocalDate dateOfSomething1;
private LocalDate dateOfSomething2;
private LocalDate dateOfSomething3;
// getters and setters
}
Кто-нибудь сталкивался с этим раньше? Любые идеи, где еще искать?
РЕДАКТИРОВАТЬ: Основная причина оказалась типичной неудачной сдачей 00-00-0000 в метку времени, однако я собираюсь оставить вопрос открытым, чтобы узнать, знает ли кто-нибудь, где было задано странное сообщение об ошибке вместо точного,
Вы используете MYSQL? Попробуйте использовать этот тип соединительной строки.
jdbc:mysql://yourserver:3306/yourdatabase?zeroDateTimeBehavior=convertToNull
Datetimes с all-zero компонентами (0000-00-00...). Эти значения не могут быть надежно представлены на Java. Connector/J 3.0.x всегда преобразовывал их в NULL при чтении из ResultSet.
Connector/J 3.1 генерирует исключение по умолчанию, когда эти значения встречаются, поскольку это наиболее правильное поведение в соответствии со стандартами JDBC и SQL. Это поведение можно изменить с помощью свойства конфигурации zeroDateTimeBehavior. Допустимые значения:
исключение (по умолчанию), которое генерирует SQLException с SQLState из S1009.
convertToNull, который возвращает NULL вместо даты.
раунд, который округляет дату до ближайшего ближайшего значения, которое составляет 0001-01-01.