4

PlayFrameworkを使い始めたばかりです。チュートリアル(基本的な機能をカバー)を終えた後、データベースとプレイの間の接続をセットアップしてみます。私の関係の1つにスキーマがあります:

CREATE  TABLE IF NOT EXISTS `shop`.`CatPath` (
  `parentC` INT NOT NULL ,
  `childC` INT NOT NULL ,
  `depth` INT NOT NULL ,
  PRIMARY KEY (`parentC`, `childC`) 
  )

だから私はモデルのクラスを構築しました:

@Entity
public class CatPath extends Model {

@EmbeddedId 
public CatPathKey key;
public Long depth;

public class CatPathKey {

        public Long parentC;
        public Long childC;
}   

public static Finder<CatPathKey, CatPath> find = new Finder<CatPathKey, CatPath>(CatPathKey.class, CatPath.class);

コンパイル後、例外が発生します:

PersistenceException: Could not find BeanDescriptor for class models.CatPath$KatPathKey. Perhaps the EmbeddedId class is not registered?

どこに問題があるのか​​わかりません。チュートリアルに従ったとき、すべてがうまくいきました。私のコードとチュートリアルの唯一の違いはキーです:私は複合キーを持っています、チュートリアルでは1つの列だけがキーを作ります。チュートリアルで「クラスの登録」が必要なかったのはなぜですか?自動的に登録されたと思いますが、なぜ今、複合キーで登録されていないのですか?

私はいくつかの情報を見つけようとしました、私は見つけました:http ://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Entities/Ids/EmbeddedId このxmlコードは「クラス登録」ですか?Playフレームワークのチュートリアルと詳細なトピックではxmlについて言及されていません。モデルのクラスでは何もしなかったので、すべてが機能しました。

4

1 に答える 1

7

クラスの@Embeddable下にアノテーションを追加する必要があります。CatPathKey

@Embeddable
public class CatPathKey {

        public Long parentC;
        public Long childC;
} 
于 2012-12-25T13:33:42.610 に答える