Skip to content

Instantly share code, notes, and snippets.

Wiktor Muron wmuron

Block or report user

Report or block wmuron

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View ReadDateZeroWithJDBC.java
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();
@wmuron
wmuron / User.java
Created Oct 20, 2016
Entity for DbAssist article
View User.java
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;
}
@wmuron
wmuron / User.hbm.xml
Created Oct 20, 2016
HBM mapping file for DbAssist article
View User.hbm.xml
<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>
View HibernateReadTest.java
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);
View HibernateSaveTest.java
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);
View UtcDateType.java
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));
}
@wmuron
wmuron / User.hbm.xml
Created Oct 20, 2016
Line showing how to use fix
View User.hbm.xml
...
<property name="createdAt" type="com.montrosesoftware.dbassist.types.UtcDateType" column="created_at"/>
...
View package-info.java
@TypeDef(name = "UtcDateType", defaultForType = Date.class, typeClass = UtcDateType.class),
package com.montrosesoftware.dbassist.types;
View SpecificationSolution.java
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));
View DbAssistSolution.java
ConditionsBuilder conditionsBuilder = new ConditionsBuilder();
Condition cond = conditionsBuilder.equal("createdAt", utcDate);
conditionsBuilder.apply(cond);
List<User> results = uRepo.find(conditionsBuilder);
You can’t perform that action at this time.