I'm using Postgres via Hibernate (annotations), but it seems to be falling over dealing with a User object:
12:09:16,442 ERROR [SchemaExport] Unsuccessful: create table User (id bigserial not null, password varchar(255), username varchar(255), primary key (id)) 12:09:16,442 ERROR [SchemaExport] ERROR: syntax error at or near "User"
If I run the SQL manually I have to put quotes around the table name as user seems to be a postgres keyword, but how can I convince hibernate to do this itself?
Thanks in advance.
PostgreSQL supports a set proprietary data type which Hibernate doesn't map by default. Popular examples for that are the JSON and JSONB data types which allow you to persist and query JSON documents in a PostgreSQL database. If you want to use these types with Hibernate, you need to define the mapping yourself.
You need to escape the table name when using reserved keywords. In JPA 1.0, there is no standardized way and the Hibernate specific solution is to use backticks:
@Entity @Table(name="`User`") public class User { ... }
In JPA 2.0, the standardized syntax looks like this:
@Entity @Table(name="\"User\"") public class User { ... }
User is a key word, find a better name or use quotes: "User". (bad idea imho, but it works if you do it everywhere)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With