package com.github.marschall.threeten.jpa.jdbc42.hibernate;
import static org.junit.Assert.assertEquals;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.OffsetDateTime;
import javax.sql.DataSource;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
import org.springframework.transaction.PlatformTransactionManager;
import com.github.marschall.threeten.jpa.jdbc42.hibernate.SqlServerTest.LocalConfiguration;
import com.github.marschall.threeten.jpa.jdbc42.hibernate.configuration.HsqlConfiguration;
@ContextConfiguration(classes = {HsqlConfiguration.class, LocalConfiguration.class})
public class HsqlTest extends AbstractTransactionalJUnit4SpringContextTests {
@Autowired
private DataSource dataSource;
@Test
public void getObject() throws SQLException {
try (Connection connection = this.dataSource.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(
// "SELECT TIMESTAMP '1960-01-01 23:03:20+02:00' "
"SELECT CAST('1960-01-01 23:03:20+05:00' AS TIMESTAMP WITH TIME ZONE) + INTERVAL '5:00' HOUR TO MINUTE "
// "SELECT CAST('1960-01-01 23:03:20+05:00' AS TIMESTAMP WITH TIME ZONE) + TIMEZONE() "
// "SELECT TIMESTAMP_WITH_ZONE(TIMESTAMP '1960-01-01 23:03:20') "
// "SELECT TIMESTAMP '1960-01-01 23:03:20' AT TIME ZONE INTERVAL '2:00' HOUR TO MINUTE "
+ "FROM (VALUES(0))");
ResultSet resultSet = preparedStatement.executeQuery()) {
OffsetDateTime expected = OffsetDateTime.parse("1960-01-01T23:03:20+05:00");
while (resultSet.next()) {
assertEquals(expected, resultSet.getObject(1, OffsetDateTime.class));
// assertEquals("1960-01-01 23:03:20+02:00", resultSet.getObject(1, String.class));
}
}
}
@Configuration
static class LocalConfiguration {
@Autowired
private DataSource dataSource;
@Bean
public PlatformTransactionManager txManager() {
return new DataSourceTransactionManager(this.dataSource);
}
}
}