2014-11-05 4 views
7

मेरे इकाईत्रुटि: स्तंभ "आईडी" प्रकार UUID की है, लेकिन अभिव्यक्ति प्रकार bytea की है

@Entity 
public class Member { 
    @Id 
    private UUID id; 
    @Column(name = "member_external_id", unique = true, nullable = false) 
    private String memberExternalId; 
    @Column(name = "client_id", unique = true, nullable = false) 
    private String clientId; 
    @Column(name = "client_secret", unique = true, nullable = false) 
    private String clientSecret; 
    @Column(unique = true, nullable = false) 
    private String email; 
    private boolean active; 
    @Column(name = "created_at") 
    private LocalDateTime createdAt; 

    public Member() { 
     // required by JPA 
    } 
    .... 
} 

जब मैं PostgreSQL के साथ OpenShift पर अपने आवेदन की तैनाती की तरह, मैं निम्नलिखित लॉग में त्रुटि देखते लग रहा है

Caused by: org.hibernate.exception.SQLGrammarException: could not execute statement 
    at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:123) [hibernate-core-4.3.5.Final.jar:4.3.5.Final] 
    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) [hibernate-core-4.3.5.Final.jar:4.3.5.Final] 
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126) [hibernate-core-4.3.5.Final.jar:4.3.5.Final] 
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:112) [hibernate-core-4.3.5.Final.jar:4.3.5.Final] 
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:190) [hibernate-core-4.3.5.Final.jar:4.3.5.Final] 
    at org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:62) [hibernate-core-4.3.5.Final.jar:4.3.5.Final] 
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3124) [hibernate-core-4.3.5.Final.jar:4.3.5.Final] 
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3581) [hibernate-core-4.3.5.Final.jar:4.3.5.Final] 
    at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:104) [hibernate-core-4.3.5.Final.jar:4.3.5.Final] 
    at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:463) [hibernate-core-4.3.5.Final.jar:4.3.5.Final] 
    at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:349) [hibernate-core-4.3.5.Final.jar:4.3.5.Final] 
    at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:350) [hibernate-core-4.3.5.Final.jar:4.3.5.Final] 
    at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:56) [hibernate-core-4.3.5.Final.jar:4.3.5.Final] 
    at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1222) [hibernate-core-4.3.5.Final.jar:4.3.5.Final] 
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl.java:1335) [hibernate-entitymanager-4.3.5.Final.jar:4.3.5.Final] 
    ... 203 more 
Caused by: org.postgresql.util.PSQLException: ERROR: column "id" is of type uuid but expression is of type bytea 
    Hint: You will need to rewrite or cast the expression. 
    Position: 130 
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2062) [postgresql-9.2-1003-jdbc4.jar:] 
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1795) [postgresql-9.2-1003-jdbc4.jar:] 
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257) [postgresql-9.2-1003-jdbc4.jar:] 
    at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:479) [postgresql-9.2-1003-jdbc4.jar:] 
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:367) [postgresql-9.2-1003-jdbc4.jar:] 
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:321) [postgresql-9.2-1003-jdbc4.jar:] 
    at org.jboss.jca.adapters.jdbc.WrappedPreparedStatement.executeUpdate(WrappedPreparedStatement.java:493) 
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:187) [hibernate-core-4.3.5.Final.jar:4.3.5.Final] 
    ... 213 more 

ओपनशफ्ट में PostgreSQL संस्करण 9.2 है।

enter image description here

निर्भरता है कि मैं डेटाबेस से कनेक्ट करने के लिए उपयोग कर रहा हूँ की तरह

<dependency> 
    <groupId>org.postgresql</groupId> 
    <artifactId>postgresql</artifactId> 
    <version>9.2-1003-jdbc4</version> 
</dependency> 

लग रहा है किसी को भी इस समस्या को देखा है? मुझे नहीं पता कि इसे कैसे हल किया जाए।

+0

http://stackoverflow.com/questions/11284359/persisting-uuid-in-postgresql-using-jpa इस लिंक की जाँच .. –

+0

सब की कोशिश की, उनमें से कोई भी काम किया! – daydreamer

+0

इस मुद्दे पर कोई अपडेट? क्या आप कृपया साझा कर सकते हैं कि आपने इसे कैसे हल किया? – klappvisor

उत्तर

6

UUID प्रकार उदा पर एक प्रकार एनोटेशन जोड़ने का प्रयास करें

@Type(type = "pg-uuid") 
@Column(name = "id", columnDefinition = "uuid") 
private UUID id; 

मैं सिर्फ एक ही गलती

0

अतीत में काम किया यह मैं इसे कैसे हल हो गई है:

  1. मैं eclipselink जेपीए पर निर्भरता जोड़ा https://mvnrepository.com/artifact/org.eclipse.persistence/org.eclipse.persistence.jpa

  2. मैं एक कनवर्टर जोड़ा मेरे यूयूआईडी

 
    @Id 
    @TypeConverter(name = "uuidConverter", dataType = Object.class, objectType = UUID.class) 
    private UUID uuid; 
संबंधित मुद्दे