This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class ReadDateZeroWithJDBC { | |
public static void main(String args[]) throws ClassNotFoundException, SQLException { | |
Connection conn = setupJDBCAndConnect(); | |
//expected epoch unix time | |
java.util.Date dateExpected = new java.util.Date(0); | |
//actual created_at_utc from the user record in DB | |
PreparedStatement stmtRead = createSelectStatement(conn, 1); | |
ResultSet rs = stmtRead.executeQuery(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class User { | |
private int id; | |
private String name; | |
private java.util.Date createdAtUtc; | |
public User(int id, String name, java.util.Date createdAtUtc) { | |
this.id = id; | |
this.name = name; | |
this.createdAtUtc = createdAtUtc; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<hibernate-mapping> | |
<class name="com.montrosesoftware.dbassist.User" table="users"> | |
<id name="id" type="integer"> | |
<column name="id" /> | |
</id> | |
<property name="name" type="string" length="100" column="name"/> | |
<property name="createdAtUtc" type="timestamp" column="created_at_utc"/> | |
</class> | |
</hibernate-mapping> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Configuration configuration = new Configuration().configure(); | |
SessionFactory factory = configuration.buildSessionFactory(); | |
Session session = factory.getCurrentSession(); | |
Transaction transaction = session.getTransaction(); | |
transaction.begin(); | |
//insert one user | |
String sql = "INSERT INTO users (id, name, created_at_utc)" | |
+ "VALUES (1, 'Adam Spring', '2016-06-12 14:54:15')"; | |
Query query = session.createSQLQuery(sql); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Configuration configuration = new Configuration().configure(); | |
SessionFactory factory = configuration.buildSessionFactory(); | |
Session session = factory.openSession(); | |
Transaction transaction = session.beginTransaction(); | |
//prepare date | |
String createdAtUtcStr = "2016-04-24 9:54:23"; | |
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | |
format.setTimeZone(TimeZone.getTimeZone("UTC")); | |
Date date = format.parse(createdAtUtcStr); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import org.hibernate.type.DateType; | |
public class UtcDateType extends DateType { | |
private static final TimeZone UTC = TimeZone.getTimeZone("UTC"); | |
@Override | |
public Object get(ResultSet rs, String name) throws SQLException { | |
return rs.getDate(name, Calendar.getInstance(UTC)); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
... | |
<property name="createdAt" type="com.montrosesoftware.dbassist.types.UtcDateType" column="created_at"/> | |
... |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@TypeDef(name = "UtcDateType", defaultForType = Date.class, typeClass = UtcDateType.class), | |
package com.montrosesoftware.dbassist.types; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); | |
CriteriaQuery<User> criteriaQuery = criteriaBuilder.createQuery(User.class); | |
Root<User> userRoot = criteriaQuery.from(User.class); | |
//Specification<User> specs = (root, query, cb) -> | |
// cb.equal(root.get("createdAt"), utcDate); | |
String paramName = "pn"; | |
Specification<User> specs = (root, query, cb) -> | |
cb.equal(root.get("createdAt"), cb.parameter(Date.class, paramName)); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ConditionsBuilder conditionsBuilder = new ConditionsBuilder(); | |
Condition cond = conditionsBuilder.equal("createdAt", utcDate); | |
conditionsBuilder.apply(cond); | |
List<User> results = uRepo.find(conditionsBuilder); |
OlderNewer