Playframework 2.0 ebean和play框架中的复合键

Playframework 2.0 ebean和play框架中的复合键,playframework-2.0,ebean,Playframework 2.0,Ebean,我刚刚开始使用Play框架。在我完成教程(包括基本功能)后,我尝试设置数据库和play之间的连接。我的一个关系具有模式: CREATE TABLE IF NOT EXISTS `shop`.`CatPath` ( `parentC` INT NOT NULL , `childC` INT NOT NULL , `depth` INT NOT NULL , PRIMARY KEY (`parentC`, `childC`) ) 所以我建立了model的类: @Entity

我刚刚开始使用Play框架。在我完成教程(包括基本功能)后,我尝试设置数据库和play之间的连接。我的一个关系具有模式:

CREATE  TABLE IF NOT EXISTS `shop`.`CatPath` (
  `parentC` INT NOT NULL ,
  `childC` INT NOT NULL ,
  `depth` INT NOT NULL ,
  PRIMARY KEY (`parentC`, `childC`) 
  )
所以我建立了model的类:

@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);
我不知道哪里有问题,当我遵循教程时,一切都正常。我的代码和教程的唯一区别是键:我有复合键,在教程中只有一列是键。为什么在教程中“注册课程”是不必要的?我猜,它是自动注册的,但为什么现在,用复合键,它不是

我试图找到一些信息,我发现:
这个xml代码是“类注册”吗?在播放框架教程和详细主题xml中没有提到,我没有对模型的类做任何操作,所有操作都正常。

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

@Embeddable
public class CatPathKey {

        public Long parentC;
        public Long childC;
} 

谢谢,现在它工作得很好。你能解释一下为什么我没有得到一个主键异常吗?ebean使用
@embeddeble
注释来注册你的类。如果使用单个主键,则它会工作,因为Containeing类已使用
@Entity
注释注册。是否可以在Embeddeble类中有两个ManyToOne字段?我需要一个复合键来确保我只有引用其他两个条目的唯一DB条目。
@Embeddable
public class CatPathKey {

        public Long parentC;
        public Long childC;
}