2016-11-25 6 views
0

Ich bin neu im Winterschlaf. Ich versuche, die folgende Entität zuzuordnen, bekomme aber eine Hibernate-Mapping-Ausnahme. Hilfe wird sehr geschätzt. Denken Sie daran, Iam PostgreSQL mitHibernate Mapping Problem mit Postgresql

package st.malike.auth.server.model; 

import java.io.Serializable; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import org.springframework.security.oauth2.common.OAuth2RefreshToken; 
import org.springframework.security.oauth2.provider.OAuth2Authentication; 


@Entity 
public class OAuth2AuthenticationRefreshToken implements Serializable { 

// @Indexed 
    @javax.persistence.Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private String id; 
    private final String tokenId; 
    private final OAuth2RefreshToken oAuth2RefreshToken; 
    private final OAuth2Authentication authentication; 

    public OAuth2AuthenticationRefreshToken(OAuth2RefreshToken oAuth2RefreshToken, OAuth2Authentication authentication) { 
     this.oAuth2RefreshToken = oAuth2RefreshToken; 
     this.authentication = authentication; 
     this.tokenId = oAuth2RefreshToken.getValue(); 
    } 

    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getTokenId() { 
     return tokenId; 
    } 

    public OAuth2RefreshToken getoAuth2RefreshToken() { 
     return oAuth2RefreshToken; 
    } 

    public OAuth2Authentication getAuthentication() { 
     return authentication; 
    } 
} 

Und immer Ausnahme wie unten

Caused by: org.hibernate.MappingException: Could not determine type for: org.springframework.security.oauth2.common.OAuth2RefreshToken, 
    at table: oauth2authentication_refresh_token, 
    for columns: [org.hibernate.mapping.Column(o_auth2refresh_token)]  
    at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:396) ~[hibernate-core-5.0.9.Final.jar:5.0.9.Final] 
    at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:369) ~[hibernate-core-5.0.9.Final.jar:5.0.9.Final] 
    at org.hibernate.mapping.Property.isValid(Property.java:225) ~[hibernate-core-5.0.9.Final.jar:5.0.9.Final] 
    at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:595) ~[hibernate-core-5.0.9.Final.jar:5.0.9.Final] 
    at org.hibernate.mapping.RootClass.validate(RootClass.java:265) ~[hibernate-core-5.0.9.Final.jar:5.0.9.Final] 
    at org.hibernate.boot.internal.MetadataImpl.validate(MetadataImpl.java:329) ~[hibernate-core-5.0.9.Final.jar:5.0.9.Final] 
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:443) ~[hibernate-core-5.0.9.Final.jar:5.0.9.Final] 
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:879) ~[hibernate-entitymanager-5.0.9.Final.jar:5.0.9.Final] 
    ... 162 common frames omitted 
+0

bitte das Schema der Tabelle zu – Zulfi

+0

Bieten Sie beabsichtigen, den Wert aller Ihre Felder in der Datenbank zu speichern? vor allem die Felder "oAuth2RefreshToken" und "authentication", sollen sie in der db gespeichert werden? wenn sie nicht mit '@ Transient' kommentiert werden oder den Modifikator' transient' zu ihrer Deklaration hinzufügen –

+0

@Zulfi Konfiguration ist spring.datasource.url = jdbc: postgresql: // localhost: 5432/eCoreAS spring.datasource.username = postgres spring.datasource.password = postgre spring.datasource.driver-class-name = org.postgresql.Driver spring.datasource.maxActive = 10 spring.datasource.maxIdle = 5 spring.datasource.minIdle = 2 Feder. datasource.initialSize = 5 spring.datasource.removeAbandoned = true spring.jpa.database-Plattform = org.hibernate.dialect.PostgreSQLDialect spring.jpa.generate-ddl = true spring.jpa.show-sql = tr ue spring.jpa.hibernate.ddl-auto = create – Farhan

Antwort

2

Wenn Sie keinen Wert für das Attribut oAuth2RefreshToken zu speichern, fügen Sie dann die Anmerkung @Transient jede Zuordnung mit der Datenbank zu ignorieren.

Wenn Sie einige Mapping haben, fügen Sie es zu Ihrer Frage