Spring JDO – makePersistentが作成したオブジェクトを返さない

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

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

私は
JDOHelper.getObjectState()を使用して、オブジェクトが一時的な状態にあることを発見しました。

新しく生成されたIDではなく、オブジェクトのすべての値を返すように JDO
に伝えるために欠けているアノテーションがあるかどうか疑問に思っています。

EDIT: I’ve done some further exploring and
found that when I use the raw Datanucleus JDP API that thsi works
fine. The problem only seems to be when I use Spring’s JDO
template. I’d really like to get an understanding of why this
differs. Thanks

前もって感謝します、

ブライアン

@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);
   }

…..

ベストアンサー

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

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です