방금 Play Framework를 사용하기 시작했습니다. 자습서 (기본 기능 다루기)를 마친 후에는 데이터베이스와 게임 사이의 설정 연결을 시도합니다. , 문제가 어디 있는지 모르는ebean의 복합 키 및 프레임 워크를 재생
PersistenceException: Could not find BeanDescriptor for class models.CatPath$KatPathKey. Perhaps the EmbeddedId class is not registered?
: 나는 예외가 컴파일 후
@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);
:
CREATE TABLE IF NOT EXISTS `shop`.`CatPath` (
`parentC` INT NOT NULL ,
`childC` INT NOT NULL ,
`depth` INT NOT NULL ,
PRIMARY KEY (`parentC`, `childC`)
)
그래서 난 모델의 클래스를 내장 : 내 관계 중 하나는 스키마가 내가 튜토리얼을 따라 갔을 때 모든 것이 효과가있었습니다. 내 코드와 튜토리얼의 차이점은 키이다 : 나는 복합 키를 가지고있다. 튜토리얼에서는 단지 하나의 컬럼 만이 키를 만든다. 튜토리얼에서 '등록 클래스'가 필요하지 않은 이유는 무엇입니까? 자동으로 등록되었지만 복합 키가있는 이유는 무엇입니까?
일부 정보를 찾으려고했는데 발견했습니다. http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Entities/Ids/EmbeddedId 이 xml 코드는 '클래스 등록'입니까? Play 프레임 워크 자습서 및 xml에 대한 세부 주제는 언급되지 않았지만 모델의 클래스에는 아무런 변화가 없었습니다.
덕분에, 지금은 완벽하게 작동합니다. 왜 내가 하나의 기본 키로 예외를 얻지 않았는지 설명해 주시겠습니까? –
'@ Embeddable' 어노테이션은 클래스를 등록하기 위해 ebean에서 사용됩니다. 하나의 기본 키를 사용한다면 containaing 클래스가'@ Entity' 주석을 사용하여 등록 되었기 때문에 작동합니다. –
Embeddable 클래스에 두 개의 ManyToOne 필드를 포함 할 수 있습니까? 다른 두 항목을 참조하는 고유 한 DB 항목 만 있는지 확인하려면 복합 키가 필요합니다. – cosmolev