ebean和play框架中的复合键

时间:2012-12-25 13:09:08

标签: playframework-2.0 ebean

我刚开始使用Play Framework。完成教程(涵盖基本功能)后,我尝试在数据库和播放之间建立连接。我的一个关系有架构:

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?

我不知道哪里出了问题,当我按照教程一切正常时。我的代码和教程之间的唯一区别是关键:我有复合键,在教程中只有一列生成密钥。为什么在教程'注册课'中没有必要?我猜,它是自动注册的,但为什么现在,使用复合键,它不是?

我试图找到一些信息,我发现:http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Entities/Ids/EmbeddedId 这个xml代码是'类注册'?在Play框架教程和详细主题中没有提到xml,我没有对我的模型的类做任何事情,一切正常。

1 个答案:

答案 0 :(得分:7)

您必须在@Embeddable类下添加CatPathKey注释:

@Embeddable
public class CatPathKey {

        public Long parentC;
        public Long childC;
}