2016-03-22 10 views
1

私は調査しましたが、この回答は表示されません。Spring Boot(JPA/Joda/Jadira)でタイプを自動登録できませんでした

私はSpring Data JPAとJoda Timeを使用するSpring Bootアプリケーション(1.3.3.RELEASE)を持っています。私は設定のためにYAMLも使用しています。

問題は次のとおりです.Jadiraを使用してユーザータイプを自動登録することはできません。

この私のapplication.ymlファイルの関連作品:

jackson: 
    joda-date-time-format: yyyy-MM-dd'T'HH:mm:ss.SSSZ 
    serialization: 
     write_dates_as_timestamps: false 
    jpa: 
    properties: 
     #jadira_usertype_autoRegisterUserTypes: true 
     jadira: 
     usertype: 
      autoRegisterUserTypes: true 

...これはJPAエンティティのいずれかです。

@Entity 
@Table(name = "POSTULATIONS") 
public final class PostulationEntity implements Serializable { 
    private static final long serialVersionUID = 608398264869292985L; 
    @Id 
    @JsonProperty("id_postulation") 
    @Column(name = "ID_POSTULATION") // columnDefinition = "BINARY(16)" 
    @GeneratedValue(generator = "uuid2") 
    @GenericGenerator(name = "uuid2", strategy = "uuid2") 
    private String id; 
    @NotNull 
    @JsonProperty("issued_at") 
    @Column(name = "ISSUED_AT", nullable = false) 
    //@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentDateTime") 
    private DateTime issuedAt; 
    @OneToOne 
    @PrimaryKeyJoinColumn 
    private PersonEntity person; 

私は指定せずにDateTimeタイプを使用できるようにしたいです@Type

私はいくつかのアプローチを試しましたが、DateTimeフィールドに@Type注釈を付けないと、これまでのところ動作しません。

最後に、これは私のGradleの構成に関連する作品です:事前に

dependencies { 
    compile 'com.google.guava:guava:19.0' 
    //compile 'org.jadira.usertype:usertype.core:5.0.0.GA' // TODO: ? 
    compile 'org.jadira.usertype:usertype.jodatime:2.0.1' // TODO 
    compile 'com.fasterxml.jackson.datatype:jackson-datatype-joda' // TODO 
    } 

おかげで...

+0

あなたこれは、最終的なスニペットですあなたのプロジェクトがかなり新しいように見えるので、spring-bootを使っています。あなたがすでにjoda-timeからjava8のdatetimesに変更することを考えていないなら、それを調べることをお勧めします。 –

答えて

0

私はあなたのYAMLは、この記事によると間違っていると思う: http://blog.jadira.co.uk/blog/2012/1/19/release-jadira-usertype-300cr1-with-support-for-joda-money-0.html

試してみてください

jpa: 
    properties: 
     jadira.usertype.autoRegisterUserTypes: true 
+0

ありがとうございますが、YAMLの設定はOKです。 1行の設定がコメントアウトされていることに注意してください。 「ブレークダウン」が機能しています。 –

0

時間、私はエラーベースのテストでそれを考え出した。依存関係を除いて、すべてがほぼ正常だった。コンソール上でスローされた例外はほとんど無意味でしたが、構成設定(および依存関係)が異なっていたため、データがある時点で正常にインポートされたため、さまざまな依存関係を試してみるというアイディアを得ました。 (私は混乱を避けるために、コメントアウトされた行を削除しています)されてとにかく

application.ymlファイルはまま:

jackson: 
    joda-date-time-format: yyyy-MM-dd'T'HH:mm:ss.SSSZ 
    serialization: 
    write_dates_as_timestamps: false 
jpa: 
    properties: 
    jadira: 
     usertype: 
     autoRegisterUserTypes: true 

すべてのJPAエンティティは今@Type注釈なしで使用することができます - 少なくとも、私が使っているタイプのために。

@Entity 
@Table(name = "POSTULATIONS") 
public final class PostulationEntity implements Serializable { 
    private static final long serialVersionUID = 608398264869292985L; 
    ... 
    @NotNull 
    @JsonProperty("issued_at") 
    @Column(name = "ISSUED_AT", nullable = false) 
    private DateTime issuedAt; 

...しかし依存関係は、ここで重要と私の問題を引き起こした要因でした。まず、org.jadira.usertype:usertype.jodatimeを取り除き、org.jadira.usertype:usertype.core BUTバージョン4.0.0.GAを有効/無効にする必要がありました。バージョン5.0.0.GAは、Springブート1.3.3.RELEASEに付属するデフォルトの依存関係では機能しないためです。

dependencies { 
    compile 'com.google.guava:guava:19.0' 
    compile 'org.jadira.usertype:usertype.core:4.0.0.GA' 
    compile 'com.fasterxml.jackson.datatype:jackson-datatype-joda' 
} 

注:私は春の依存関係の管理プラグインを使用していますので、、私はいくつかの他の依存関係のバージョンを使用していない理由は次のとおりです。

apply plugin: 'io.spring.dependency-management' 

dependencyManagement { 
    imports { 
    mavenBom("org.springframework.boot:spring-boot-dependencies:${springBootVersion}") 
    } 
} 

dependencies { 
    compile 'com.google.guava:guava:19.0' 
    compile 'org.jadira.usertype:usertype.core:4.0.0.GA' // TODO 
    compile 'com.fasterxml.jackson.datatype:jackson-datatype-joda' // TODO 
} 
関連する問題