2014-02-21 4 views
0

Android에서 맞춤 잔치를 사용할 수 있습니까? 엔티티에 하나를 쓰려고했는데 엔티티가 DAO에 의해 쓰여질 때 실행하는 데 운이 없었습니다. 그래서 예제에서 "MyDatePersister"를 사용하려고했는데 그 중 하나를 사용할 수 없습니다. >https://bitbucket.org/adstro/android-sandbox - 내가 여기 ORMLite는 Android에서 계속 작동합니까?

@DatabaseTable 
public class ClickCount implements Serializable { 
    // other declarations 
    @DatabaseField(columnName = DATE_FIELD_NAME, persisterClass = MyDatePersister.class) 
    private Date lastClickDate; 
    // more code 
} 

가의 Bitbucket에서 전체 프로젝트에 대한 링크입니다이 나의 실체에> https://github.com/j256/ormlite-jdbc/blob/master/src/test/java/com/j256/ormlite/examples/datapersister/MyDatePersister.java

-

persister는 예를 하나 거의 동일합니다. 기본적으로 ORMLite Android 예제 중 하나이며 custom persister 예제가 추가되었습니다.

모든 의견을 크게 환영합니다.

감사합니다.

답변

0

무엇을 얻었습니까?

DateType을 확장하려고하지는 않았지만 사용자 정의 영구 보존자가 정상적으로 작동했습니다. 아래는 내가 필요로하는 JSONArrayPersister입니다. 혼란스러운 부분은 메서드의 이름을 지정하는 것이지만 일단 제대로 설정되면 괜찮습니다. 당신의 기업에 대한 다음

package com.example.acme.persister; 

import com.j256.ormlite.field.FieldType; 
import com.j256.ormlite.field.SqlType; 
import com.j256.ormlite.field.types.BaseDataType; 
import com.j256.ormlite.support.DatabaseResults; 

import org.json.JSONArray; 
import org.json.JSONException; 

import java.sql.SQLException; 

public class JSONArrayPersister extends BaseDataType { 

    public static int DEFAULT_WIDTH = 1024; 

    private static final JSONArrayPersister singleTon = new JSONArrayPersister(); 

    public static JSONArrayPersister getSingleton() { 
     return singleTon; 
    } 

    private JSONArrayPersister() { 
     super(SqlType.STRING, new Class<?>[] { String.class }); 
    } 

    protected JSONArrayPersister(SqlType sqlType, Class<?>[] classes) { 
     super(sqlType, classes); 
    } 

    @Override 
    public Object parseDefaultString(FieldType fieldType, String defaultStr) { 
     try { 
      return new JSONArray(defaultStr); 
     } catch (JSONException ex) 
     { 
      return new JSONArray(); 
     } 
    } 

    @Override 
    public Object resultToSqlArg(FieldType fieldType, DatabaseResults results, int columnPos) throws SQLException { 
     try { 
      return new JSONArray(results.getString(columnPos)); 
     } catch (JSONException ex) 
     { 
      return new JSONArray(); 
     } 
    } 

    @Override 
    public Object resultStringToJava(FieldType fieldType, String stringValue, int columnPos) throws SQLException { 
     return parseDefaultString(fieldType, stringValue); 
    } 

    @Override 
    public int getDefaultWidth() { 
     return DEFAULT_WIDTH; 
    } 
} 

:

@DatabaseField(persisterClass = JSONArrayPersister.class) 
private JSONArray something; 
관련 문제