2017-12-27 15 views
2

방 데이터베이스에 새 항목 인 FeedItem을 추가하고 마이그레이션을 작성합니다.방 데이터베이스 이전에 원시 유형이 없음

문제점 : FeedItem 클래스에 Date 유형이 있는데, 프리미티브 유형이 아닙니다. 이 경우 마이그레이션을 작성하는 올바른 방법은 무엇입니까?

@Entity(tableName = "FeedItem") 
public class FeedItem implements Item, Votable { 

private int id; 
@PrimaryKey(autoGenerate = true) 
@ColumnInfo(name = "feedItemRowIndex") 
private int rowIndex; 
private int toId; 
private int fromId; 
private Date date; 
... 

현재 마이 그 레이션은 다음과 같습니다. 날짜 유형에 대한

private static final Migration MIGRATION_1_2 = new Migration(1, 2) { 
    @Override 
    public void migrate(@NonNull SupportSQLiteDatabase database) { 

     database.execSQL("CREATE TABLE FeedItem (feedItemId INTEGER, " + 
       "feedItemRowIndex INTEGER, " + 
       "feedVotes INTEGER" + 
       "feedVote INTEGER" + 
       "toId INTEGER" + 
       "fromId INTEGER" + 
       "date Date" + // i need to change this row 
       ... 
       "PRIMARY KEY (feedItemRowIndex))" 

여기 계산기

public class DateConverter { 
@TypeConverter 
public static Date toDate(Long timestamp) { 
    return timestamp == null ? null : new Date(timestamp); 
} 

@TypeConverter 
public static Long toTimestamp(Date date) { 
    return date == null ? null : date.getTime(); 
} 
} 

감사합니다!

+1

길면 INTEGER – EpicPandaForce

답변

0

이것은 매우 쉽습니다. Room은 변환기 유형에 적합한 기본 유형을 생성합니다.

그래서 제 경우에는 유형이 INTEGER입니다. @EpicPandaForce에게 감사의 말을 전합니다

0

room.schemaLocation이 build.gradle 파일에 설정된 경우 생성 된 스키마를보고 Room이 테이블을 만드는 데 사용하는 정확한 sql을 복사 할 수 있습니다. Complete example here