/* * Hibernate, Relational Persistence for Idiomatic Java * * License: GNU Lesser General Public License (LGPL), version 2.1 or later. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.userguide.mapping.basic; import java.time.Instant; import java.time.format.DateTimeFormatter; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import org.hibernate.Session; import org.hibernate.dialect.H2Dialect; import org.hibernate.jpa.test.BaseEntityManagerFunctionalTestCase; import org.hibernate.testing.RequiresDialect; import org.junit.Test; import static org.hibernate.testing.transaction.TransactionUtil.doInJPA; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; /** * @author Vlad Mihalcea */ @RequiresDialect(H2Dialect.class) public class InstantLiteralTest extends BaseEntityManagerFunctionalTestCase { @Override protected Class<?>[] getAnnotatedClasses() { return new Class<?>[] { DateEvent.class }; } @Test public void test() { final DateEvent _dateEvent = doInJPA( this::entityManagerFactory, entityManager -> { DateEvent dateEvent = new DateEvent(); dateEvent.setCreatedOn( Instant.from( DateTimeFormatter.ISO_INSTANT.parse( "2016-10-13T06:40:18.745Z" ) ) ); entityManager.persist( dateEvent ); return dateEvent; } ); doInJPA( this::entityManagerFactory, entityManager -> { DateEvent dateEvent = entityManager.unwrap( Session.class ) .createQuery( "select de " + "from DateEvent de " + "where de.createdOn = '2016-10-13T06:40:18.745Z' ", DateEvent.class ) .getSingleResult(); assertNotNull(dateEvent); assertEquals(_dateEvent.getId(), dateEvent.getId()); } ); doInJPA( this::entityManagerFactory, entityManager -> { DateEvent dateEvent = entityManager.unwrap( Session.class ) .createQuery( "select de " + "from DateEvent de " + "where de.createdOn = :createdOn ", DateEvent.class ) .setParameter( "createdOn", Instant.from( DateTimeFormatter.ISO_INSTANT.parse( "2016-10-13T06:40:18.745Z" ) ) ) .getSingleResult(); assertNotNull(dateEvent); assertEquals(_dateEvent.getId(), dateEvent.getId()); } ); } @Entity(name = "DateEvent") public static class DateEvent { @Id @GeneratedValue private Long id; @Column private Instant createdOn; public Long getId() { return id; } public Instant getCreatedOn() { return createdOn; } public void setCreatedOn(Instant createdOn) { this.createdOn = createdOn; } } }