2011-12-21 40 views
0

私は春と冬眠を使用して簡単なオンラインオークションシステムを開発しています。Spring、JPA、およびHibernateの問題

@Id 
@GeneratedValue 
@Column(name="item_id") 
private Integer itemId; 

@Column 
private String name; 

@Column 
private String summary; 

@Column 
private double price; 

@Column 
private String description; 

@Column(name="sDate", insertable=false, updatable=false, columnDefinition="timestamp default current_timestamp") 
@Generated(value=GenerationTime.INSERT) 
@Temporal(TemporalType.TIMESTAMP) 
private Date sDate; 

@Temporal(TemporalType.TIMESTAMP) 
private Date cDate; 

sDatecDateそれぞれ日付と終了日を始めている:私のようなデータ変数が含まれているPOJO「Items.java」を作成しました。 sDateは自動的に挿入される現在の日付で、cDateは、フォームを通じて販売者が入力する終了日です。したがって、私はJSPフォームを使用して売り手からの入力を取ってmysqlに(名前、要約、価格、説明、および終了日)を挿入しようとしています。日付以外のすべてのデータが挿入されます。日付値はデータベース内でNULLです。それはなぜそうですか?

ご協力いただければ幸いです。私はこの問題をたくさん探しましたが、解決策を得ることができませんでした。

答えて

1

日付の@Columnアノテーションに「Insertable = false」があると思います。

boolean insertable 
(Optional) Whether the column is included in SQL INSERT statements generated by the persistence provider. 
Default value: 
true 
Since: 
JPA 1.0 

参考:http://www.objectdb.com/api/java/jpa/Column

それを削除してください。

+0

こんにちは。私はsDateではなくcDateについて話しています。 sDateは正常で、現在のタイムスタンプは自動的にmysqlに挿入されますが、値がjsp形式から取得されたsDate(たとえば、売り手が(名前、要約、価格、説明、入札締め切り日)を入力するため、この終了日/ cDateは挿入される)。私はフォームからデータを取得している間、日付の値は文字列形式でDATETIME形式に変換されていないと思いますが、どうすれば春のコントローラクラスで変換できますか? – user1108823

1

insertable=falseを設定する場合は、Oracleのトリガーやデフォルト値などのデータベースメカニズムを使用して、この列の値を何らかの形で指定する必要があります。アプリケーションコードはタイムスタンプを生成しません。