2016-12-23 15 views
1

eclipseで生成されたhibernate beanをj2ee Webプロジェクトに含めるために、ソースリンクを使用しています。私たちには、主なプロジェクト以外の様々なユーティリティやサービスを含むプロジェクトがあります。Webプロジェクトの@Versionブレーク

私たちのBeanをユーティリティプロジェクトにインポートすると、Beanは正常にインポートされます。彼らは4.3で休止状態になっており、休止状態のjpa 2.1 jarを持っています。しかし、メインのプロジェクトに同じモデルのBeanをインポートすると、@Versionアノテーションにコンパイルエラーが発生します。それは言う:

JSR 220:Java Persistence API、9.1.17:バージョンのプロパティには、int、Integer、short、Short、long、Long、Timestampの3種類がサポートされています。

コードは次のとおりです。

@Temporal(TemporalType.TIMESTAMP) 
@Column(name = "UPDT_TMSTMP", nullable = false) 
@Version 
private Date updateTimestamp; 

私は、単純なJavaプロジェクトにインポートするときに完全に動作しますが、(私たちはカップルを試してみました)Webモジュールにインポートするときに、このエラーを取得し、言ったように。エラー・テキストは、プロパティ・タイプにjava.util.Dateを使用できないと言っているようですが、ユーティリティ・プロジェクトにインポートする前に再度使用しました。

私たちはなぜユーティリティプロジェクトとWebモジュールの違いについて説明するのが駄目です。同じモデルBeanを何度もインポートしなくても、これらのユーティリティモジュールを動かすことができるようにするために、Webモジュールでこの機能を使用したいと思っています。

アイデア?調査の道のりは、私たちが現在持っているよりも良いでしょう。私たちは驚いています。

+0

Eclipseプラグイン(JPAプラグインなど)のエラーではなく、コンパイルエラーですか? Javaコンパイラは、アノテーションを持つフィールドにはどのような型があるか気にしません。したがって、おそらく、エラーはJPA統合プラグインから発生します。これは、間違った構成パス(JPAが他のプロジェクトと同じように古いバージョンに設定されている場合)によって引き起こされる可能性があります。 – dunni

+0

java.util.Dateの代わりにjava.sql.Dateを使用しようとしましたか? データベースがミリ秒の精度でタイムスタンプを保存するように設定されているかどうかを確認することもできます。 – fg78nc

+0

また、java.sql.Timestampを使用することもできます – fg78nc

答えて

2

タイムスタンプを使用してください。いくつかの国はDST(私のポーからばかげたアイデア)を持っています。この国では、日付は存在しても、重複しても、存在しなくてもかまいません。タイムスタンプにはそのような例外はなく、SSOTとしてはるかに優れています。

BTW:移動中のサーバー(飛行機や車内、潜水艦の場合、いつかタイムゾーンを変更する可能性があります)があれば、ローカライズされたタイムスタンプZが良いかもしれません。

関連する問題