0

안드로이드 데이터 영구 라이브러리 안드로이드 룸을 사용하는 경우 어떻게 모든 필드 값을 포함하여 Comment 객체를 데이터베이스에 직접 삽입 할 수 있습니까? Comment Object로 가치를 부여 하시겠습니까? 내가 아는 한Android 룸을 사용하는 객체 간의 관계에 대해 혼란스러운 경우

, 나는 때문에 필드 replyComment의 룸 디렉토리에 Entity으로 Comment 객체를 사용할 수 없습니다하는 것도 Comment 개체입니다. 그리고 Comment Object에 모두 포함 된 일대일 관계와 일대 다 관계로 인해 @Relations 주석을 사용하여 POJO를 정의하는 경우에도 Comment 개체를 쿼리 할 수 ​​없습니다.

Comment 외래 키 사용과 같은 모델 정의 변경, 삽입 작업 및 쿼리 작업에 영향을주는 다른 방법이 있습니까?

public class Comment { 
    public String content; 
    public String id; 
    public Comment replyComment; 
    public User user; 
    public List<ImageMedia> images; 
} 

public class User{ 
    public String id; 
    public String name; 
} 

public class ImageMedia{ 
    public String key; 
    public String url; 
} 

답변

0

주석 모델 정의 당신은 아이들이 가리키는 외래 키 열이 데이터베이스 구조를 모델링 개체의 집합을 만들어야합니다

번호를 변경 제외한 다른 방법이 있나요 다시 자신의 부모 :

  • CommentEntity는 답장을 보내 주셔서 다시 CommentEntity에 외부 키를 가지고
  • CommentEntity 다시 UserEntity
  • ImageMediaEntity에 외부 키를 가지고 다시 CommentEntity 사실
+0

에 외부 키를 가지고, 당신이 말한 것처럼 새로운 기업 모델을 작성했다에도 ** 룸 ** 아무 생각이 없습니다 내가 삽입 및 쿼리 데이터를 잘 도움이. 내가 아는 한, 내가 개체 사이의 변환 작업을 처리하기 위해 추상적 인 레이어를 만들어야하고 serval 삽입 작업을 수행하여 모든 엔티티 값을 테이블에 삽입하고 serval 쿼리 작업을 수행해야합니다 모든 엔터티 값을 쿼리하려면 원하는 모든 Comment 모델에서 해당 엔터티 값을 모두 만듭니다. –

+0

@LemonYang : "방에서 데이터를 잘 삽입하고 쿼리하는 데 도움이되지 않습니다."- 나는 그 뜻을 모릅니다. 여러분의'@Dao' 메소드는 엔티티 단위로, 여러 연산을 결합하는'@ Transaction' 메소드로 이루어질 것입니다. Room은 SQLite 위에 얇은 객체 레이어를 제공합니다. Retrofit은 REST보다 얇은 객체 레이어를 제공하고 Apollo-Android는 GraphQL보다 얇은 객체 레이어를 제공합니다. – CommonsWare