Nick V (
https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%...
) *updated* an issue
Hibernate ORM (
https://hibernate.atlassian.net/browse/HHH?atlOrigin=eyJpIjoiYTk0MmFhYjhm...
) / Bug (
https://hibernate.atlassian.net/browse/HHH-16948?atlOrigin=eyJpIjoiYTk0Mm...
) HHH-16948 (
https://hibernate.atlassian.net/browse/HHH-16948?atlOrigin=eyJpIjoiYTk0Mm...
) TimestampMutabilityPlan breaks entity's equals() (
https://hibernate.atlassian.net/browse/HHH-16948?atlOrigin=eyJpIjoiYTk0Mm...
)
Change By: Nick V (
https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%...
)
TimestampMutabilityPlan
[
returns|https://github.com/hibernate/hibernate-orm/blob/6.2.5/hibernate-c...]
java.sql.Timestamp which breaks equals().
Entity:
{code:java}package com.example.demobug;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Temporal;
import jakarta.persistence.TemporalType;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.UUID;
@Entity
@NoArgsConstructor
@Data
public class Company {
@Id
private UUID id;
@Temporal(TemporalType.TIMESTAMP)
private Date establishedAt;
}
{code}
Test.
{code:java}package com.example.demobug;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;
import java.util.Date;
import java.util.UUID;
import static org.assertj.core.api.Assertions.assertThat;
@DataJpaTest
class CompanyTest {
@Autowired
public TestEntityManager entityManager;
@Test
void shouldSaveEntity() {
final Company company = createNewCompany();
final Company found = entityManager.find(Company.class, company.getId());
assertThat(found.getId()).isEqualTo(company.getId());
assertThat(found.getEstablishedAt()).isEqualTo(company.getEstablishedAt());
assertThat(found).isEqualTo(company);
}
private Company createNewCompany() {
final Company company = new Company();
company.setId(UUID.randomUUID());
company.setEstablishedAt(new Date());
entityManager.persistAndFlush(company);
entityManager.detach(company);
entityManager.flush();
entityManager.clear();
return company;
}
}{code}
Assertion error:
{noformat}org.opentest4j.AssertionFailedError:
expected: 2023-07-17T15:47:01.131 (java.util.Date)
but was: 2023-07-17T15:47:01.131 (java.sql.Timestamp){noformat}
(
https://hibernate.atlassian.net/browse/HHH-16948#add-comment?atlOrigin=ey...
) Add Comment (
https://hibernate.atlassian.net/browse/HHH-16948#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#100232- sha1:33a7c72 )