Guillaume VON TOKARSKI (
https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=5a9c818...
) *updated* an issue
Hibernate ORM (
https://hibernate.atlassian.net/browse/HHH?atlOrigin=eyJpIjoiYjNhZDkwY2Jj...
) / Bug (
https://hibernate.atlassian.net/browse/HHH-16241?atlOrigin=eyJpIjoiYjNhZD...
) HHH-16241 (
https://hibernate.atlassian.net/browse/HHH-16241?atlOrigin=eyJpIjoiYjNhZD...
) Unable to write/query attribute on type with AttributeConverter (
https://hibernate.atlassian.net/browse/HHH-16241?atlOrigin=eyJpIjoiYjNhZD...
)
Change By: Guillaume VON TOKARSKI (
https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=5a9c818...
)
The model has {{java.time.YearMonth}} attributes being mapped to integers on the DB
(MariaDB)
Here is how it was used:
{code:java}@Convert(converter = YearMonthConverter.class)
@Column(name = "month", nullable = false)
private YearMonth month;{code}
And here is the converter class (based on Jakarta now):
{code:java}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);
}
}{code}
Adding a demo project to the ticket with 2 errors:
* Persisting the entity gives {{PersistenceException}}:
** message: {{(conn=9) You have an error in your SQL syntax; check the manual that
corresponds to your MariaDB server version for the right syntax to use near
'year_month, id) values (202212, 1)' at line 1}}
* Searching the entity with {{ =}} gives a {{PersistenceException}}:
** query: {{SELECT de FROM DemoEntity de WHERE de.yearMonth = :yearMonth}}
** message: {{Converting org.hibernate.exception.SQLGrammarException to JPA
PersistenceException : JDBC exception executing SQL [select d1_0.id,d1_0.year_month from
demo_table d1_0 where d1_0.year_month=?]}}
* Searching the entity with {{ MAX}} gives an {{IllegalArgumentException}} :
** query: {{SELECT MAX(de.yearMonth) FROM DemoEntity de}}
** message: {{org.hibernate.QueryException: Parameter 1 of function max() has type
COMPARABLE, but argument is of type java.time.YearMonth}}
Let me know if there is anything else that I can provide.
(
https://hibernate.atlassian.net/browse/HHH-16241#add-comment?atlOrigin=ey...
) Add Comment (
https://hibernate.atlassian.net/browse/HHH-16241#add-comment?atlOrigin=ey...
)
Get Jira notifications on your phone! Download the Jira Cloud app for Android (
https://play.google.com/store/apps/details?id=com.atlassian.android.jira....
) or iOS (
https://itunes.apple.com/app/apple-store/id1006972087?pt=696495&ct=Em...
) This message was sent by Atlassian Jira (v1001.0.0-SNAPSHOT#100217- sha1:65be9f2 )