package com.nominanuda.postgresql;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.query.Query;
import org.junit.Assert;
import org.junit.Test;
import com.nominanuda.hibernate.HibernateConfiguration;
import com.nominanuda.zen.obj.Obj;
import com.nominanuda.zen.obj.SimpleJixParser;
//@Ignore
public class PgHibIT {
private static final String DB_USER = "zen";
private static final String DB_PASS = "zen";
private static final String CONN_STRING = "jdbc:postgresql://127.0.0.1:5432/zentest";
//CREATE TABLE testjson(id bigint NOT NULL, jsonproperty jsonb, CONSTRAINT myentity_pkey PRIMARY KEY (id))
@Test
public void testJdbc() throws Exception {
Class.forName("org.postgresql.Driver");
Connection c = DriverManager.getConnection(CONN_STRING, DB_USER,
DB_PASS);
PreparedStatement q = c.prepareStatement("SELECT * FROM testjson");
ResultSet rs = q.executeQuery();
rs.close();
c.close();
}
@Test
public void testHib() throws Exception {
HibernateConfiguration cfg = new HibernateConfiguration();
cfg.setConnectionUrl(CONN_STRING);
cfg.setUsername(DB_USER);
cfg.setPassword(DB_PASS);
cfg.setShowSql(true);
cfg.setResource("com/nominanuda/postgresql/test.hbm.xml");
SessionFactory sf = cfg.getSessionFactory();
Session s = sf.openSession();
Transaction t = s.beginTransaction();
Map<String, Object> m = new HashMap<>();
m.put("id", 1L);
m.put("jsonproperty", SimpleJixParser.obj("{foo:'bar'}"));
s.saveOrUpdate("MyEntity", m);
Query<?> q = s.createQuery("from MyEntity");
List<?> rs = q.getResultList();
for(Object o : rs) {
System.err.println(o.getClass());
Obj oo = (Obj)((Map<?,?>)o).get("jsonproperty");
System.err.println(oo.toString());
Assert.assertEquals("bar", oo.getStr("foo"));
}
t.commit();
s.close();
}
}