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について言及されていません。モデルのクラスでは何もしなかったので、すべてが機能しました。