Same as https://hibernate.atlassian.net/browse/HHH-16241, but for entity keys, so I will be reusing most of that issue’s contents (I didn’t test inserts, but I suppose they may be also broken). The model has java.time.YearMonth attributes being mapped to integers on the DB (MariaDB):
@Convert(converter = YearMonthConverter.class)
@Column(name = "month", nullable = false)
@Id
private YearMonth reportMonth;
Converter class:
public class YearMonthConverter implements AttributeConverter<YearMonth, Integer> {
@Override
public Integer convertToDatabaseColumn(YearMonth attribute) {
return attribute == null ? null : (attribute.getYear() * 100) + attribute.getMonth().getValue();
}
@Override
public YearMonth convertToEntityAttribute(Integer dbData) {
return dbData == null ? null : YearMonth.of(dbData / 100, dbData % 100);
}
}
Or use YearMonthDateType from Hypersistence Utils - the result is the same, i.e. building a query like
entityManager.createQuery("SELECT MAX(de.yearMonthKey) FROM DemoEntity de");
results in an exception:
|