3

I am trying to use LocalDate in my entities and this usage has plenty of documentation around the net. Which is why I am baffled it doesn't work.

Here is my error: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect date value: '\xAC\xED\x00\x05sr\x00\x0Djava.time.Ser\x95]\x84\xBA\x1B"H\xB2\x0C\x00\x00xpw\x07\x03\x00\x00\x07\xD7\x0C\x03x'

So, it obviously needs a converter. I have tried the following links:

This one says to add the spring converters to the scan path for the EntityManager. I directly tried his example (get all kinds of errors) as well as adapting it to my code (below code does indeed execute):

@Autowired
private void configPersistence(LocalContainerEntityManagerFactoryBean factoryBean) {
    factoryBean.setPackagesToScan(Worker.class.getPackage().toString(),"org.springframework.data.jpa.convert.threeten");
}

But the problem persists.

I've been here and here, which all say something similar.

Simply adding the hibernate-java8 dependency doesn't work as it suggests.

   <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-java8</artifactId>
        <version>${hibernate.version}</version>
    </dependency>

I have gone so far as to independently instantiate the converter bean and no dice. It must be something else.

UPDATE

If I literally C&P the Spring code and add it as a bean, it works!? This is not the right way to do it.

@Bean
public AttributeConverter<LocalDate,Date> getConverter() {
    return new LocalDateConverter();
}

@Converter(autoApply = true)
public static class LocalDateConverter implements AttributeConverter<LocalDate, Date> {

    @Override
    public Date convertToDatabaseColumn(LocalDate date) {
        return Jsr310Converters.LocalDateToDateConverter.INSTANCE.convert(date);
    }

    @Override
    public LocalDate convertToEntityAttribute(Date date) {
        return Jsr310Converters.DateToLocalDateConverter.INSTANCE.convert(date);
    }
}

Transitive dependencies from spring-data

+- org.hibernate:hibernate-entitymanager:jar:4.3.11.Final:compile
[INFO] |  |  +- org.hibernate:hibernate-core:jar:4.3.11.Final:compile
[INFO] |  |  +- org.hibernate.common:hibernate-commons-annotations:jar:4.0.5.Final:compile
[INFO] |  |  \- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:jar:1.0.0.Final:compile

End update

Here is my entity:

@Entity
public class Worker {
    private Long id;
    private String givenName;
    private String familyName;
    private LocalDate dob;
    private String nationalId;
    private byte[] photo;

    public Worker() {
        this.id = Math.abs(new Random().nextLong());
    }

    @Id
    @Column(name = "ID")
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @Basic
    @Column(name = "GivenName")
    public String getGivenName() {
        return givenName;
    }

    public void setGivenName(String givenName) {
        this.givenName = givenName;
    }

    @Basic
    @Column(name = "FamilyName")
    public String getFamilyName() {
        return familyName;
    }

    public void setFamilyName(String familyName) {
        this.familyName = familyName;
    }

    @Basic
    @Column(name = "DOB")
    public LocalDate getDob() {
        return dob;
    }

    public void setDob(LocalDate dob) {
        this.dob = dob;
    }

    @Basic
    @Column(name = "NationalID")
    public String getNationalId() {
        return nationalId;
    }

    public void setNationalId(String nationalId) {
        this.nationalId = nationalId;
    }

    @Basic
    @Column(name = "photo")
    public byte[] getPhoto() {
        return photo;
    }

    public void setPhoto(byte[] photo) {
        this.photo = photo;
    }
}
2
  • Are you using hibernate? Which version? Commented Apr 1, 2016 at 19:15
  • Updated the question based on your comment Commented Apr 1, 2016 at 19:18

1 Answer 1

3

You need Hibernate 5.0+ along with the hibernate-java8 dependency for it to work. You can check the 5.0 changelog here which should show the addition of the Java 8 support. Also some official blog entry saying the same here.

Please check the migration guide from 4.3 to 5.0 for additional information.

Sign up to request clarification or add additional context in comments.

1 Comment

I bumped my hibernate version and we were off to the races!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.