{"id":84289,"date":"2018-12-11T07:00:30","date_gmt":"2018-12-11T05:00:30","guid":{"rendered":"https:\/\/www.javacodegeeks.com\/?p=84289"},"modified":"2018-12-06T13:59:21","modified_gmt":"2018-12-06T11:59:21","slug":"map-postgresql-jpa-entity-hibernate","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2018\/12\/map-postgresql-jpa-entity-hibernate.html","title":{"rendered":"How to map PostgreSQL Enums to JPA entity properties using Hibernate"},"content":{"rendered":"<h2>Introduction<\/h2>\n<p>The open-source <a href=\"https:\/\/github.com\/vladmihalcea\/hibernate-types\"><code>hibernate-types<\/code><\/a> project allows you to map JSON, ARRAY, <code>YearMonth<\/code>, <code>Month<\/code> or database-specific columns (e.g. INET addresses).<\/p>\n<p>In this article, we are going to see how you can map a PostgreSQL Enum type to a Java array when using JPA and Hibernate.<\/p>\n<h2>Maven dependency<\/h2>\n<p>First of all, you need to set up the following Maven dependency in your project <code>pom.xml<\/code> configuration file:<\/p>\n<pre class=\"brush:xml\">&lt;dependency&gt;\r\n    &lt;groupId&gt;com.vladmihalcea&lt;\/groupId&gt;\r\n    &lt;artifactId&gt;hibernate-types-52&lt;\/artifactId&gt;\r\n    &lt;version&gt;2.3.5&lt;\/version&gt;\r\n&lt;\/dependency&gt;<\/pre>\n<p>If you\u2019re using older versions of Hibernate, check out the <a href=\"https:\/\/github.com\/vladmihalcea\/hibernate-types\"><code>hibernate-types<\/code> GitHub repository<\/a> for more info about the matching dependency for your current Hibernate version.<\/p>\n<h2>Domain Model<\/h2>\n<p>Let\u2019s assume we have the following <code>sensor_state<\/code> PostgreSQL enum in our database schema:<\/p>\n<pre class=\"brush:sql\">CREATE TYPE sensor_state AS ENUM (\r\n    'ONLINE',\r\n    'OFFLINE',\r\n    'UNKNOWN'\r\n);<\/pre>\n<p>Our application needs to store Events in the following database table:<\/p>\n<pre class=\"brush:sql\">CREATE TABLE event (\r\n  id bigint NOT NULL,\r\n  sensor_names text[],\r\n  sensor_values integer[],\r\n  sensor_states sensor_state[],\r\n  CONSTRAINT event_pkey PRIMARY KEY (id)\r\n)<\/pre>\n<p>Notice that the <code>sensor_names<\/code>, <code>sensor_values<\/code> and <code>sensor_states<\/code> columns are stored as arrays. To map the PostgreSQL array column types to Java arrays, you need a custom Hibernate type since the built-in types don\u2019t support persisting database-specific arrays.<\/p>\n<p>However, thanks to the <code>hibernate-types<\/code> library you can easily map the <code>event<\/code> table to the following <code>Event<\/code> entity:<\/p>\n<pre class=\"brush:java\">@Entity(name = \"Event\")\r\n@Table(name = \"event\")\r\n@TypeDefs({\r\n    @TypeDef(\r\n        typeClass = StringArrayType.class,\r\n        defaultForType = String[].class\r\n    ),\r\n    @TypeDef(\r\n        typeClass = IntArrayType.class,\r\n        defaultForType = int[].class\r\n    ),\r\n    @TypeDef(\r\n        typeClass = EnumArrayType.class,\r\n        defaultForType = SensorState[].class,\r\n        parameters = {\r\n            @Parameter(\r\n                name = EnumArrayType.SQL_ARRAY_TYPE,\r\n                value = \"sensor_state\"\r\n            )\r\n        }\r\n    )\r\n})\r\npublic class Event {\r\n\r\n    @Id\r\n    private Long id;\r\n\r\n    @Column(\r\n        name = \"sensor_names\",\r\n        columnDefinition = \"text[]\"\r\n    )\r\n    private String[] sensorNames;\r\n\r\n    @Column(\r\n        name = \"sensor_values\",\r\n        columnDefinition = \"integer[]\"\r\n    )\r\n    private int[] sensorValues;\r\n\r\n    @Column(\r\n        name = \"sensor_states\",\r\n        columnDefinition = \"sensor_state[]\"\r\n    )\r\n    private SensorState[] sensorStates;\r\n\r\n    public Long getId() {\r\n        return id;\r\n    }\r\n\r\n    public Event setId(\r\n            Long id) {\r\n        this.id = id;\r\n        return this;\r\n    }\r\n\r\n    public String[] getSensorNames() {\r\n        return sensorNames;\r\n    }\r\n\r\n    public Event setSensorNames(\r\n            String[] sensorNames) {\r\n        this.sensorNames = sensorNames;\r\n        return this;\r\n    }\r\n\r\n    public int[] getSensorValues() {\r\n        return sensorValues;\r\n    }\r\n\r\n    public Event setSensorValues(\r\n            int[] sensorValues) {\r\n        this.sensorValues = sensorValues;\r\n        return this;\r\n    }\r\n\r\n    public SensorState[] getSensorStates() {\r\n        return sensorStates;\r\n    }\r\n\r\n    public Event setSensorStates(\r\n            SensorState[] sensorStates) {\r\n        this.sensorStates = sensorStates;\r\n        return this;\r\n    }\r\n}<\/pre>\n<p>Notice the Fluent-style API used by the <code>Event<\/code> entity. While JPA is more strict when it comes to defining setters, Hibernate allows you to define the setters so that you can build the entity using a Fluent-style API. For more details, check out <a href=\"https:\/\/vladmihalcea.com\/fluent-api-entity-building-with-jpa-and-hibernate\/\">this article<\/a>.<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<p>The <code>@TypeDef<\/code> annotation is used to define the mapping between the Java array class types and their associated Hibernate types:<\/p>\n<ul>\n<li>The Java <code>String[]<\/code> array type is handled by the <a href=\"https:\/\/github.com\/vladmihalcea\/hibernate-types\/blob\/4cdb72112b4b784e7b3dc8a253de6c410877e90f\/hibernate-types-52\/src\/main\/java\/com\/vladmihalcea\/hibernate\/type\/array\/StringArrayType.java\"><code>StringArrayType<\/code><\/a>.<\/li>\n<li>The Java <code>int[]<\/code> array type is handled by the <a href=\"https:\/\/github.com\/vladmihalcea\/hibernate-types\/blob\/4cdb72112b4b784e7b3dc8a253de6c410877e90f\/hibernate-types-52\/src\/main\/java\/com\/vladmihalcea\/hibernate\/type\/array\/IntArrayType.java\"><code>IntArrayType<\/code><\/a><\/li>\n<li>The Java <code>SensorState[]<\/code> is handled by the <a href=\"https:\/\/github.com\/vladmihalcea\/hibernate-types\/blob\/c7ffd5a398556f64b5469fa33dddd999378082d6\/hibernate-types-52\/src\/main\/java\/com\/vladmihalcea\/hibernate\/type\/array\/EnumArrayType.java\"><code>EnumArrayType<\/code><\/a>. The <code>EnumArrayType.SQL_ARRAY_TYPE<\/code> parameter is used to describe the database-specific column type used for storing the Enum.<\/li>\n<\/ul>\n<p>The <code>SensorState<\/code> Java enum is mapped as follows:<\/p>\n<pre class=\"brush:java\">public enum SensorState {\r\n    ONLINE, \r\n    OFFLINE, \r\n    UNKNOWN;\r\n}<\/pre>\n<h2>Testing Time<\/h2>\n<p>Now, when storing the following <code>Event<\/code> entity:<\/p>\n<pre class=\"brush:sql\">entityManager.persist(\r\n    new Event()\r\n    .setId(1L)\r\n    .setSensorNames(\r\n        new String[]{\r\n            \"Temperature\", \r\n            \"Pressure\"\r\n        })\r\n    .setSensorValues(\r\n        new int[]{\r\n            12, \r\n            756\r\n        }\r\n    )\r\n    .setSensorStates(\r\n        new SensorState[]{\r\n            SensorState.ONLINE, \r\n            SensorState.OFFLINE,\r\n            SensorState.ONLINE,     \r\n            SensorState.UNKNOWN\r\n        }\r\n    )   \r\n);<\/pre>\n<p>Hibernate executes the following SQL INSERT statement:<\/p>\n<pre class=\"brush:sql\">Query:[\"\r\n    insert into event (\r\n        sensor_names, \r\n        sensor_states, \r\n        sensor_values, \r\n        id\r\n    ) \r\n    values (\r\n        ?, \r\n        ?, \r\n        ?, \r\n        ?\r\n    )\r\n\"], \r\nParams:[(\r\n    {\"Temperature\",\"Pressure\"}, \r\n    {\"ONLINE\",\"OFFLINE\",\"ONLINE\",\"UNKNOWN\"}, \r\n    {\"12\",\"756\"}, \r\n    1\r\n)]<\/pre>\n<p>And, when we fetch the <code>Event<\/code> entity, we can see that all properties are fetched properly<\/p>\n<pre class=\"brush:sql\">Event event = entityManager.find(Event.class, 1L);\r\n\r\nassertArrayEquals(\r\n    new String[]{\r\n        \"Temperature\", \r\n        \"Pressure\"\r\n    }, \r\n    event.getSensorNames()\r\n);\r\n\r\nassertArrayEquals(\r\n    new int[]{\r\n        12, \r\n        756\r\n    }, \r\n    event.getSensorValues()\r\n);\r\n\r\nassertArrayEquals(\r\n    new SensorState[]{\r\n        SensorState.ONLINE, \r\n        SensorState.OFFLINE, \r\n        SensorState.ONLINE, \r\n        SensorState.UNKNOWN\r\n    }, \r\n    event.getSensorStates()\r\n);<\/pre>\n<p>Cool, right?<\/p>\n<p>If you enjoyed this article, I bet you are going to love my <a href=\"https:\/\/vladmihalcea.com\/books\/high-performance-java-persistence\/?utm_source=javaadvent&amp;utm_medium=banner&amp;utm_campaign=article\"><strong>Book<\/strong><\/a> and <a href=\"https:\/\/vladmihalcea.com\/courses\/?utm_source=javaadvent&amp;utm_medium=banner&amp;utm_campaign=article\"><strong>Video Courses<\/strong><\/a> as well.<\/p>\n<p><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/hpjp_big.jpg\"><img decoding=\"async\" class=\"aligncenter wp-image-84309 size-medium\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/hpjp_big-232x300.jpg\" alt=\"map PostgreSQL Enums\" width=\"232\" height=\"300\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/hpjp_big-232x300.jpg 232w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/hpjp_big.jpg 344w\" sizes=\"(max-width: 232px) 100vw, 232px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/HPJP_Video_Vertical.jpg\"><img decoding=\"async\" class=\"aligncenter wp-image-84310 size-medium\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/HPJP_Video_Vertical-225x300.jpg\" alt=\"map PostgreSQL Enums\" width=\"225\" height=\"300\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/HPJP_Video_Vertical-225x300.jpg 225w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/12\/HPJP_Video_Vertical.jpg 450w\" sizes=\"(max-width: 225px) 100vw, 225px\" \/><\/a><\/p>\n<h2>Conclusion<\/h2>\n<p>The <a href=\"https:\/\/github.com\/vladmihalcea\/hibernate-types\"><code>hibernate-types<\/code><\/a> project supports more than ARRAY types. You can map PostgreSQL-specific Enums, nullable <code>Character<\/code>, JSON, or even provide your own immutable Hibernate custom <code>Types<\/code>.<\/p>\n<p>For more details about the <code>hibernate-types<\/code> project, check out <a href=\"https:\/\/vladmihalcea.com\/the-hibernate-types-open-source-project-is-born\/\">this article<\/a>.<\/p>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td>Published on Java Code Geeks with permission by Vlad Mihalcea , partner at our <a href=\"\/\/www.javacodegeeks.com\/join-us\/jcg\/\" target=\"_blank\" rel=\"noopener\">JCG program<\/a>. See the original article here: <a href=\"https:\/\/www.javaadvent.com\/2018\/12\/how-to-map-postgresql-enums-to-jpa-entity-properties-using-hibernate.html\" target=\"_blank\" rel=\"noopener\">How to map PostgreSQL Enums to JPA entity properties using Hibernate<\/a><\/p>\n<p>Opinions expressed by Java Code Geeks contributors are their own.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Introduction The open-source hibernate-types project allows you to map JSON, ARRAY, YearMonth, Month or database-specific columns (e.g. INET addresses). In this article, we are going to see how you can map a PostgreSQL Enum type to a Java array when using JPA and Hibernate. Maven dependency First of all, you need to set up the &hellip;<\/p>\n","protected":false},"author":507,"featured_media":153,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[971,33,657],"class_list":["post-84289","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-java","tag-hibernate","tag-jpa","tag-postgresql"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How to map PostgreSQL Enums to JPA entity properties using Hibernate - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"Interested to learn about map PostgreSQL Enums? Check our article explaining how to map PostgreSQL Enums to JPA entity properties using Hibernate.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.javacodegeeks.com\/2018\/12\/map-postgresql-jpa-entity-hibernate.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to map PostgreSQL Enums to JPA entity properties using Hibernate - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"Interested to learn about map PostgreSQL Enums? Check our article explaining how to map PostgreSQL Enums to JPA entity properties using Hibernate.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2018\/12\/map-postgresql-jpa-entity-hibernate.html\" \/>\n<meta property=\"og:site_name\" content=\"Java Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javacodegeeks\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/vlad.mihalcea.71\" \/>\n<meta property=\"article:published_time\" content=\"2018-12-11T05:00:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/jboss-hibernate-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Vlad Mihalcea\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Vlad Mihalcea\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/12\\\/map-postgresql-jpa-entity-hibernate.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/12\\\/map-postgresql-jpa-entity-hibernate.html\"},\"author\":{\"name\":\"Vlad Mihalcea\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/2c2d5059ee4fd88b1b3b9e52efc5b129\"},\"headline\":\"How to map PostgreSQL Enums to JPA entity properties using Hibernate\",\"datePublished\":\"2018-12-11T05:00:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/12\\\/map-postgresql-jpa-entity-hibernate.html\"},\"wordCount\":405,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/12\\\/map-postgresql-jpa-entity-hibernate.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/jboss-hibernate-logo.jpg\",\"keywords\":[\"Hibernate\",\"JPA\",\"PostgreSQL\"],\"articleSection\":[\"Enterprise Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/12\\\/map-postgresql-jpa-entity-hibernate.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/12\\\/map-postgresql-jpa-entity-hibernate.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/12\\\/map-postgresql-jpa-entity-hibernate.html\",\"name\":\"How to map PostgreSQL Enums to JPA entity properties using Hibernate - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/12\\\/map-postgresql-jpa-entity-hibernate.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/12\\\/map-postgresql-jpa-entity-hibernate.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/jboss-hibernate-logo.jpg\",\"datePublished\":\"2018-12-11T05:00:30+00:00\",\"description\":\"Interested to learn about map PostgreSQL Enums? Check our article explaining how to map PostgreSQL Enums to JPA entity properties using Hibernate.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/12\\\/map-postgresql-jpa-entity-hibernate.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/12\\\/map-postgresql-jpa-entity-hibernate.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/12\\\/map-postgresql-jpa-entity-hibernate.html#primaryimage\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/jboss-hibernate-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/jboss-hibernate-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/12\\\/map-postgresql-jpa-entity-hibernate.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Enterprise Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\\\/enterprise-java\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"How to map PostgreSQL Enums to JPA entity properties using Hibernate\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"name\":\"Java Code Geeks\",\"description\":\"Java Developers Resource Center\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"alternateName\":\"JCG\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.javacodegeeks.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/javacodegeeks\",\"https:\\\/\\\/x.com\\\/javacodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/2c2d5059ee4fd88b1b3b9e52efc5b129\",\"name\":\"Vlad Mihalcea\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f9f4ac0b2229b9f9fb993393b822ffbf63e60c1665a244176d3c4728565a9a9f?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f9f4ac0b2229b9f9fb993393b822ffbf63e60c1665a244176d3c4728565a9a9f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f9f4ac0b2229b9f9fb993393b822ffbf63e60c1665a244176d3c4728565a9a9f?s=96&d=mm&r=g\",\"caption\":\"Vlad Mihalcea\"},\"description\":\"Vlad Mihalcea is a software architect passionate about software integration, high scalability and concurrency challenges.\",\"sameAs\":[\"http:\\\/\\\/vladmihalcea.wordpress.com\\\/\",\"https:\\\/\\\/www.facebook.com\\\/vlad.mihalcea.71\",\"http:\\\/\\\/www.linkedin.com\\\/pub\\\/vlad-mihalcea\\\/20\\\/a59\\\/580\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/vlad-mihalcea\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to map PostgreSQL Enums to JPA entity properties using Hibernate - Java Code Geeks","description":"Interested to learn about map PostgreSQL Enums? Check our article explaining how to map PostgreSQL Enums to JPA entity properties using Hibernate.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.javacodegeeks.com\/2018\/12\/map-postgresql-jpa-entity-hibernate.html","og_locale":"en_US","og_type":"article","og_title":"How to map PostgreSQL Enums to JPA entity properties using Hibernate - Java Code Geeks","og_description":"Interested to learn about map PostgreSQL Enums? Check our article explaining how to map PostgreSQL Enums to JPA entity properties using Hibernate.","og_url":"https:\/\/www.javacodegeeks.com\/2018\/12\/map-postgresql-jpa-entity-hibernate.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_author":"https:\/\/www.facebook.com\/vlad.mihalcea.71","article_published_time":"2018-12-11T05:00:30+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/jboss-hibernate-logo.jpg","type":"image\/jpeg"}],"author":"Vlad Mihalcea","twitter_card":"summary_large_image","twitter_creator":"@javacodegeeks","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Vlad Mihalcea","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2018\/12\/map-postgresql-jpa-entity-hibernate.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2018\/12\/map-postgresql-jpa-entity-hibernate.html"},"author":{"name":"Vlad Mihalcea","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/2c2d5059ee4fd88b1b3b9e52efc5b129"},"headline":"How to map PostgreSQL Enums to JPA entity properties using Hibernate","datePublished":"2018-12-11T05:00:30+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2018\/12\/map-postgresql-jpa-entity-hibernate.html"},"wordCount":405,"commentCount":0,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2018\/12\/map-postgresql-jpa-entity-hibernate.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/jboss-hibernate-logo.jpg","keywords":["Hibernate","JPA","PostgreSQL"],"articleSection":["Enterprise Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2018\/12\/map-postgresql-jpa-entity-hibernate.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2018\/12\/map-postgresql-jpa-entity-hibernate.html","url":"https:\/\/www.javacodegeeks.com\/2018\/12\/map-postgresql-jpa-entity-hibernate.html","name":"How to map PostgreSQL Enums to JPA entity properties using Hibernate - Java Code Geeks","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2018\/12\/map-postgresql-jpa-entity-hibernate.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2018\/12\/map-postgresql-jpa-entity-hibernate.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/jboss-hibernate-logo.jpg","datePublished":"2018-12-11T05:00:30+00:00","description":"Interested to learn about map PostgreSQL Enums? Check our article explaining how to map PostgreSQL Enums to JPA entity properties using Hibernate.","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2018\/12\/map-postgresql-jpa-entity-hibernate.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2018\/12\/map-postgresql-jpa-entity-hibernate.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2018\/12\/map-postgresql-jpa-entity-hibernate.html#primaryimage","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/jboss-hibernate-logo.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/jboss-hibernate-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.javacodegeeks.com\/2018\/12\/map-postgresql-jpa-entity-hibernate.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.javacodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Java","item":"https:\/\/www.javacodegeeks.com\/category\/java"},{"@type":"ListItem","position":3,"name":"Enterprise Java","item":"https:\/\/www.javacodegeeks.com\/category\/java\/enterprise-java"},{"@type":"ListItem","position":4,"name":"How to map PostgreSQL Enums to JPA entity properties using Hibernate"}]},{"@type":"WebSite","@id":"https:\/\/www.javacodegeeks.com\/#website","url":"https:\/\/www.javacodegeeks.com\/","name":"Java Code Geeks","description":"Java Developers Resource Center","publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"alternateName":"JCG","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.javacodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.javacodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.javacodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/javacodegeeks","https:\/\/x.com\/javacodegeeks"]},{"@type":"Person","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/2c2d5059ee4fd88b1b3b9e52efc5b129","name":"Vlad Mihalcea","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f9f4ac0b2229b9f9fb993393b822ffbf63e60c1665a244176d3c4728565a9a9f?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f9f4ac0b2229b9f9fb993393b822ffbf63e60c1665a244176d3c4728565a9a9f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f9f4ac0b2229b9f9fb993393b822ffbf63e60c1665a244176d3c4728565a9a9f?s=96&d=mm&r=g","caption":"Vlad Mihalcea"},"description":"Vlad Mihalcea is a software architect passionate about software integration, high scalability and concurrency challenges.","sameAs":["http:\/\/vladmihalcea.wordpress.com\/","https:\/\/www.facebook.com\/vlad.mihalcea.71","http:\/\/www.linkedin.com\/pub\/vlad-mihalcea\/20\/a59\/580"],"url":"https:\/\/www.javacodegeeks.com\/author\/vlad-mihalcea"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/84289","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/users\/507"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=84289"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/84289\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media\/153"}],"wp:attachment":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=84289"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=84289"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=84289"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}