Advertisement
Guest User

Untitled

a guest
Mar 1st, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.78 KB | None | 0 0
  1. <?xml version='1.0' encoding='utf-8'?>
  2. <!DOCTYPE hibernate-configuration PUBLIC
  3. "-//Hibernate/Hibernate Configuration DTD//EN"
  4. "http://hibernate.sourceforge.net/hibernate-configuration-5.0.dtd">
  5.  
  6. <hibernate-configuration>
  7. <session-factory>
  8. <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
  9. <property name="hibernate.connection.url">jdbc:postgresql://localhost:5433/sample_database</property>
  10. <property name="hibernate.connection.username">postgres</property>
  11. <property name="hibernate.connection.password">admin</property>
  12. <property name="hibernate.connection.pool_size">10</property>
  13. <property name="show_sql">true</property>
  14. <property name="hibernate.dialect">com.code.model.MyPostgreSQL94Dialect</property>
  15. <property name="hibernate.current_session_context_class">thread</property>
  16.  
  17. <mapping class="com.code.model.Address" />
  18.  
  19. </session-factory>
  20. </hibernate-configuration>
  21.  
  22. package com.code.model;
  23. import java.io.Serializable;
  24.  
  25. import javax.persistence.Column;
  26. import javax.persistence.Entity;
  27. import javax.persistence.GeneratedValue;
  28. import javax.persistence.GenerationType;
  29. import javax.persistence.Id;
  30. import javax.persistence.Table;
  31.  
  32. import org.hibernate.annotations.Type;
  33.  
  34. @Entity
  35. @Table(name = "address")
  36. public class Address implements Serializable{
  37. @Id
  38. @GeneratedValue(strategy = GenerationType.AUTO)
  39. @Column(name="emp_id", updatable = false, nullable = false)
  40. private Long empId;
  41.  
  42. @Column(name="emp_Details")
  43. @Type(type = "MyJsonType")
  44. private MyJson empDetails;
  45.  
  46. public long getEmpId() {
  47. return empId;
  48. }
  49.  
  50. public void setEmpId(long empId) {
  51. this.empId = empId;
  52. }
  53.  
  54. public MyJson getEmpDetails() {
  55. return empDetails;
  56. }
  57.  
  58. public void setEmpDetails(MyJson empDetails) {
  59. this.empDetails = empDetails;
  60. }
  61. }
  62.  
  63. package com.code.model;
  64.  
  65. import java.io.Serializable;
  66.  
  67. public class MyJson implements Serializable {
  68. private String details;
  69.  
  70. public String getDetails() {
  71. return details;
  72. }
  73.  
  74. public void setDetails(String details) {
  75. this.details = details;
  76. }
  77. }
  78.  
  79. package com.code.model;
  80.  
  81. import java.io.ByteArrayInputStream;
  82. import java.io.ByteArrayOutputStream;
  83. import java.io.IOException;
  84. import java.io.ObjectInputStream;
  85. import java.io.ObjectOutputStream;
  86. import java.io.Serializable;
  87. import java.io.StringWriter;
  88. import java.sql.PreparedStatement;
  89. import java.sql.ResultSet;
  90. import java.sql.SQLException;
  91. import java.sql.Types;
  92.  
  93. import org.hibernate.HibernateException;
  94. import org.hibernate.engine.spi.SessionImplementor;
  95. import org.hibernate.usertype.UserType;
  96.  
  97. import com.fasterxml.jackson.databind.ObjectMapper;
  98.  
  99. public class MyJsonType implements UserType {
  100.  
  101. @Override
  102. public int[] sqlTypes() {
  103. return new int[]{Types.JAVA_OBJECT};
  104. }
  105.  
  106. @Override
  107. public Class<MyJson> returnedClass() {
  108. return MyJson.class;
  109. }
  110.  
  111. @Override
  112. public Object nullSafeGet(final ResultSet rs, final String[] names, final SessionImplementor session,
  113. final Object owner) throws HibernateException, SQLException {
  114. final String cellContent = rs.getString(names[0]);
  115. if (cellContent == null) {
  116. return null;
  117. }
  118. try {
  119. final ObjectMapper mapper = new ObjectMapper();
  120. return mapper.readValue(cellContent.getBytes("UTF-8"), returnedClass());
  121. } catch (final Exception ex) {
  122. throw new RuntimeException("Failed to convert String to Invoice: " + ex.getMessage(), ex);
  123. }
  124. }
  125.  
  126. @Override
  127. public void nullSafeSet(final PreparedStatement ps, final Object value, final int idx,
  128. final SessionImplementor session) throws HibernateException, SQLException {
  129. if (value == null) {
  130. ps.setNull(idx, Types.OTHER);
  131. return;
  132. }
  133. try {
  134. final ObjectMapper mapper = new ObjectMapper();
  135. final StringWriter w = new StringWriter();
  136. mapper.writeValue(w, value);
  137. w.flush();
  138. ps.setObject(idx, w.toString(), Types.OTHER);
  139. } catch (final Exception ex) {
  140. throw new RuntimeException("Failed to convert Invoice to String: " + ex.getMessage(), ex);
  141. }
  142. }
  143.  
  144. @Override
  145. public Object deepCopy(final Object value) throws HibernateException {
  146. try {
  147. // use serialization to create a deep copy
  148. ByteArrayOutputStream bos = new ByteArrayOutputStream();
  149. ObjectOutputStream oos = new ObjectOutputStream(bos);
  150. oos.writeObject(value);
  151. oos.flush();
  152. oos.close();
  153. bos.close();
  154.  
  155. ByteArrayInputStream bais = new ByteArrayInputStream(bos.toByteArray());
  156. return new ObjectInputStream(bais).readObject();
  157. } catch (ClassNotFoundException | IOException ex) {
  158. throw new HibernateException(ex);
  159. }
  160. }
  161.  
  162. @Override
  163. public boolean isMutable() {
  164. return true;
  165. }
  166.  
  167. @Override
  168. public Serializable disassemble(final Object value) throws HibernateException {
  169. return (Serializable) this.deepCopy(value);
  170. }
  171.  
  172. @Override
  173. public Object assemble(final Serializable cached, final Object owner) throws HibernateException {
  174. return this.deepCopy(cached);
  175. }
  176.  
  177. @Override
  178. public Object replace(final Object original, final Object target, final Object owner) throws HibernateException {
  179. return this.deepCopy(original);
  180. }
  181.  
  182. @Override
  183. public boolean equals(final Object obj1, final Object obj2) throws HibernateException {
  184. if (obj1 == null) {
  185. return obj2 == null;
  186. }
  187. return obj1.equals(obj2);
  188. }
  189.  
  190. @Override
  191. public int hashCode(final Object obj) throws HibernateException {
  192. return obj.hashCode();
  193. }
  194. }
  195.  
  196. package com.code.model;
  197.  
  198. import java.sql.Types;
  199.  
  200. import org.hibernate.dialect.PostgreSQL94Dialect;
  201.  
  202. public class MyPostgreSQL94Dialect extends PostgreSQL94Dialect {
  203. public MyPostgreSQL94Dialect() {
  204. this.registerColumnType(Types.JAVA_OBJECT, "jsonb");
  205. }
  206. }
  207.  
  208. @org.hibernate.annotations.TypeDef(name = "MyJsonType", typeClass = com.comcast.model.MyJsonType.class)
  209.  
  210. package com.comcast.model;
  211.  
  212. package com.code;
  213.  
  214. import org.hibernate.Session;
  215. import org.hibernate.SessionFactory;
  216. import org.hibernate.Transaction;
  217.  
  218. import com.code.model.Address;
  219. import com.code.model.MyJson;
  220.  
  221. public class CreateData {
  222. static SessionFactory sessFact;
  223. static Session session;
  224. static Transaction tr;
  225.  
  226. public static void main(String[] args) throws Exception {
  227. init();
  228. CreateData cd = new CreateData();
  229. cd.insert();
  230. }
  231.  
  232. public static void init() {
  233. sessFact = HibernateUtil.getSessionFactory();
  234. session = sessFact.getCurrentSession();
  235. tr = session.beginTransaction();
  236. }
  237.  
  238. public void insert() {
  239. String json = "{" + ""city" : "Lawrence"," + ""state" : "432 Essentric exmark street"," + ""zipcode" : "11111"}";
  240.  
  241. MyJson j = new MyJson();
  242. j.setDetails(json);
  243.  
  244. Address add = new Address();
  245. add.setEmpDetails(j);
  246.  
  247. session.save(add);
  248. tr.commit();
  249. System.out.println("Successfully inserted");
  250. sessFact.close();
  251. }
  252. }
  253.  
  254. Mar 01, 2018 7:30:33 PM org.hibernate.Version logVersion
  255. INFO: HHH000412: Hibernate Core {5.1.0.Final}
  256. Mar 01, 2018 7:30:33 PM org.hibernate.cfg.Environment <clinit>
  257. INFO: HHH000206: hibernate.properties not found
  258. Mar 01, 2018 7:30:33 PM org.hibernate.cfg.Environment buildBytecodeProvider
  259. INFO: HHH000021: Bytecode provider name : javassist
  260. Mar 01, 2018 7:30:33 PM org.hibernate.boot.jaxb.internal.stax.LocalXmlResourceResolver resolveEntity
  261. WARN: HHH90000012: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/hibernate-configuration. Use namespace http://www.hibernate.org/dtd/hibernate-configuration instead. Support for obsolete DTD/XSD namespaces may be removed at any time.
  262. Mar 01, 2018 7:30:33 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
  263. INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
  264. Mar 01, 2018 7:30:33 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
  265. WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)
  266. Mar 01, 2018 7:30:33 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
  267. INFO: HHH10001005: using driver [org.postgresql.Driver] at URL [jdbc:postgresql://localhost:5433/sample_database]
  268. Mar 01, 2018 7:30:33 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
  269. INFO: HHH10001001: Connection properties: {user=postgres, password=****}
  270. Mar 01, 2018 7:30:33 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
  271. INFO: HHH10001003: Autocommit mode: false
  272. Mar 01, 2018 7:30:33 PM org.hibernate.engine.jdbc.connections.internal.PooledConnections <init>
  273. INFO: HHH000115: Hibernate connection pool size: 10 (min=1)
  274. Mar 01, 2018 7:30:34 PM org.hibernate.dialect.Dialect <init>
  275. INFO: HHH000400: Using dialect: com.comcast.model.MyPostgreSQL94Dialect
  276. Mar 01, 2018 7:30:34 PM org.hibernate.engine.jdbc.env.internal.LobCreatorBuilderImpl useContextualLobCreation
  277. INFO: HHH000424: Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException
  278. Mar 01, 2018 7:30:34 PM org.hibernate.type.BasicTypeRegistry register
  279. INFO: HHH000270: Type registration [java.util.UUID] overrides previous : org.hibernate.type.UUIDBinaryType@6a2f6f80
  280. Enitial SessionFactory creation failedorg.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [MyJsonType]
  281. Exception in thread "main" java.lang.ExceptionInInitializerError
  282. at com.comcast.HibernateUtil.<clinit>(HibernateUtil.java:30)
  283. at com.comcast.CreateData.init(CreateData.java:29)
  284. at com.comcast.CreateData.main(CreateData.java:21)
  285. Caused by: org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [MyJsonType]
  286. at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:229)
  287. at org.hibernate.boot.internal.ClassLoaderAccessImpl.classForName(ClassLoaderAccessImpl.java:62)
  288. at org.hibernate.cfg.annotations.SimpleValueBinder.fillSimpleValue(SimpleValueBinder.java:521)
  289. at org.hibernate.cfg.SetSimpleValueTypeSecondPass.doSecondPass(SetSimpleValueTypeSecondPass.java:25)
  290. at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1621)
  291. at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1579)
  292. at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:278)
  293. at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:83)
  294. at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:418)
  295. at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:87)
  296. at com.comcast.HibernateUtil.<clinit>(HibernateUtil.java:24)
  297. ... 2 more
  298. Caused by: java.lang.ClassNotFoundException: Could not load requested class : MyJsonType
  299. at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl$AggregatedClassLoader.findClass(ClassLoaderServiceImpl.java:217)
  300. at java.lang.ClassLoader.loadClass(Unknown Source)
  301. at java.lang.ClassLoader.loadClass(Unknown Source)
  302. at java.lang.Class.forName0(Native Method)
  303. at java.lang.Class.forName(Unknown Source)
  304. at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:226)
  305. ... 12 more
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement