BaseDaoImpl 클래스를 ORMLite로 확장 할 수있는 방법이 있는지 궁금합니다. 내 안드로이드 프로젝트에서 여러 Dao 개체를 사용하여 여러 비즈니스 개체에 액세스하고 있습니다. 내 비즈니스 개체는 서로 다른 테이블에 저장되며 모두 Long id;
및 Long objectId;
두 개의 멤버가있는 BusinessObject 기본 클래스에서 상속받습니다. 여기서 id
은 데이터베이스 테이블 내의 개체의 실제 고유 ID입니다.기능을 확장하기 위해 Android에서 ORMLite의 BaseDaoImpl 클래스를 확장하는 방법
public abstract class BusinessObject{
public static final String ID_COLUMN_NAME = "_id";
public static final String OBJECT_ID_COLUMN_NAME = "object_id";
@SerializedName(value="_id")
@DatabaseField(canBeNull=false, columnName = ID_COLUMN_NAME, generatedId=true)
private int id;
@SerializedName(value="id")
@DatabaseField(canBeNull=false, columnName=OBJECT_ID_COLUMN_NAME, index=true, unique = true)
private long objectId;
}
이제 비즈니스 객체를 id 및 objectId로 삭제할 수 있기를 원합니다. id로 삭제하는 것은 물론 BaseDaoImpl 클래스로 인해 가능합니다. 그것도 objectId에 의해 삭제할 수 있도록 BaseDaoImpl 클래스를 확장하고 일반 메서드 deleteByObjectId() 메서드를 추가하는 방법에 대해 생각했습니다. 메서드 내에서 PreparedDelete 문을 사용하는 dao의 delete() 메서드를 사용하여 개체를 삭제합니다.
public class ExtendedDaoImple<T, ID> extends BaseDaoImpl<T, ID> implements ExtendedDao<T, ID> {
protected ExtendedDaoImple(Class<T> dataClass) throws SQLException {
super(dataClass);
}
public int deleteByObjectId(long objectId) throws SQLException {
DeleteBuilder<T, ID> delBuilder = (DeleteBuilder<T, ID>) deleteBuilder();
delBuilder.where().eq(BusinessObject.OBJECT_ID_COLUMN_NAME, objectId).prepare();
return delete(delBuilder.prepare());
}
}
내 문제는 내가 OrmLiteSqliteOpenHelper 클래스를 형성 ExtendedDaoImpl 클래스의 인스턴스를 생성하는 방법을 모른다는 것이다. 일반적으로 Dao는 OrmLiteSqliteOpenHelper 클래스의 getDao() 메서드를 호출하고 Dao를 사용해야하는 BusinessObject 클래스를 전달하여 만들어집니다. 예 :
Dao<Image, Long> imageDao = getDao(Image.class);
그래서 ExtendedDaoImpl 개체를 대신 BaseDaoImpl 개체의 검색 할 수있는 방법으로 OrmLiteSqliteOpenHelper 클래스를 수정하는 방법은 무엇입니까? 내 문제는 내가 OrmLiteSqliteOpenHelper 클래스를 형성 ExtendedDaoImpl 클래스의 인스턴스를 만드는 방법을 모르겠입니다
대단원! 완벽하게 작동합니다. 빠른 지원에 다시 한 번 감사드립니다! 너는 잘하고있어! 나는 그것이 정말로 늦었고 분명히이 섹션을 간과 했으므로 문서를 간략하게 살펴 보았다는 것을 인정해야한다. 그것을 읽은 후에 나는 그렇게 나쁜 것이 아니라고 생각한다. 분명히 나를 찾아내는 것이 더 어려웠습니다. ;) – Flo
표준 JPA 주석을 사용하여이를 수행 할 수 있습니까? – Buckstabue
@ Buckstabue 무엇을할까요? ORMLite는 클래스를 마크 업하기 위해 JPA 주석의 하위 집합을 지원하지만, android fu는 여전히 필요합니다. – Gray