4

私はJavaを使用しており、Webサーバーで休止状態にしてOracle SQLデータベースに保存しています。JavaDateオブジェクトを作成しましたが、何らかの理由でそれがデータベースに到達するまでに、時刻ではなく日付しかありません。たとえば、Date オブジェクトには「2012 年 12 月 10 日 1:23:45 PM」と表示されますが、データベースでは「10-DEC-12」としか表示されません。

なぜこれが起こるのでしょうか?以下は、日付を作成して保存する方法の例です。

サービス.java

Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();

Nos nos = new Nos();
nos.setTimeReceived( new Date() );
session.save( nos );

tx.commit();

Nos.java

@Entity
@Table(name = "nos")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Nos
{
    @Id
    @GeneratedValue
    private Long id;

    @Basic(optional=false)
    @Temporal(TemporalType.DATE)
    @Column(name="timereceived")
    private java.util.Date timeReceived;

// getters and setters
4

1 に答える 1

10

TemporalType.TIMESTAMPに対応する を使用しjava.sql.Timestampます。

JavaDocsに従ってTemporalTypeTemporalType.DATEマップさjava.sql.Dateれます。これは、時間コンポーネントとして表示されていません。

SQL の定義に準拠するには、インスタンスが関連付けられている特定のタイム ゾーンで時間、分、秒、およびミリ秒をゼロに設定することDATEにより、インスタンスによってラップされるミリ秒値を「正規化」する必要があります。java.sql.Date

于 2012-12-10T22:48:29.380 に答える