2011-11-13 12 views
2

私は、SpringとJDOをMySQLデータベースに接続して使用しています。 オブジェクトを永続化すると、作成されたオブジェクトがmakePersistent()メソッドによって返されることが期待されます。オブジェクトを返しますが、このオブジェクトは新しく作成されたオブジェクトのIDのみを持ちます。永続化された他のフィールドは、すべてnullの値を持ちます。Spring JDO - makePersistentが作成したオブジェクトを返さない

以下のコード例では、carouselNumberの値12を挿入します。返されるオブジェクトの値はNULLに設定され、IDはデータベースから新しく作成されたID値を持ちます。

JDOHelper.getObjectState()を使用しましたが、私のオブジェクトが過渡状態になっています。

JDOに、新しく生成されたIDではなく、オブジェクトのすべての値を返すように指定するための注釈があるかどうかは疑問です。

EDIT: これまでの調査で、Datanucleus JDP APIを使用すると、正常に動作することがわかりました。この問題は、SpringのJDOテンプレートを使用している場合にのみ発生します。私は本当にこれがなぜ違うのかを理解したいと思っています。事前のおかげで

おかげで、

ブライアン。

@PersistenceCapable(table = "CAROUSEL", identityType = IdentityType.APPLICATION) 

public class Carousel { 

    @PrimaryKey(column = "ID") 
    @Persistent(valueStrategy = IdGeneratorStrategy.INCREMENT) 
    private Long id; 

    @Column(name = "CAROUSEL_NUM") 
    private int carourselNumber; 

......

public class CarouselDAOImpl extends JdoDaoSupport implements ICarouselDAO { 

    public Carousel insert(Carousel carousel) { 
    return getJdoTemplate().makePersistent(carousel); 
    } 

.....

答えて

0

てmakePersistentメソッドを使用すると、IDを生成するために渡されましたカルーセルオブジェクトを変更するので、それはdoesnの何かを返す必要があります。方法を無効にして、渡したカルーセルを使用してください。

+0

こんにちは。うん、私はそれを実現する。私はあなたが示唆したことを試したが、問題は同じである。 Spring JDOTemplateを使用すると、オブジェクトが一時的になりますが、JDO APIを直接使用するとオブジェクトが空に戻ってしまうのが分かります。これは、私がgetCarouselNumberを呼び出すと、それが遅く値をロードすることを意味します。 –

関連する問題