Bug Fix :D

This commit is contained in:
Ziver Koc 2010-11-09 18:58:52 +00:00
parent b75174c3fc
commit 9f3c8a886e
2 changed files with 14 additions and 14 deletions

View file

@ -63,12 +63,12 @@ public abstract class DBBean {
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface DBLinkTable {
/** The name of the Link table */
/** The name of the Link table, should not contain any strange characters or spaces */
String name();
/** The class of the linked bean */
Class<? extends DBBean> beanClass();
/** The name of the column that contains this objects id */
String column() default "";
/** The name of the column that contains the main objects id */
String idColumn() default "";
}
/**
@ -231,7 +231,7 @@ public abstract class DBBean {
if( list != null ){
DBLinkTable linkTable = field.getAnnotation( DBLinkTable.class );
String subtable = linkTable.name();
String idcol = (linkTable.column().isEmpty() ? config.tableName : linkTable.column() );
String idcol = (linkTable.idColumn().isEmpty() ? config.tableName : linkTable.idColumn() );
String sub_idcol = "id";
DBBeanConfig subConfig = null;

View file

@ -135,7 +135,7 @@ public class DBBeanSQLResultHandler<T> implements SQLResultHandler<T>{
obj = bean_class.newInstance();
cacheDBBean(obj, id);
// Get id field
// Set id field
obj.id = id;
// Get the rest
for( Field field : bean_config.fields ){
@ -144,7 +144,7 @@ public class DBBeanSQLResultHandler<T> implements SQLResultHandler<T>{
// Another DBBean class
if( DBBean.class.isAssignableFrom( field.getType() )){
if(db != null){
Object subid = result.getObject(name);
Long subid = result.getLong( name );
DBBean subobj = getCachedDBBean(field.getType(), subid);
if( subobj == null )
subobj = DBBean.load(db, (Class<? extends DBBean>)field.getType(), subid);
@ -156,15 +156,17 @@ public class DBBeanSQLResultHandler<T> implements SQLResultHandler<T>{
field.getAnnotation( DBLinkTable.class ) != null){
if(db != null){
DBLinkTable linkTable = field.getAnnotation( DBLinkTable.class );
String subtable = linkTable.name();
String idcol = (linkTable.column().isEmpty() ? bean_config.tableName : linkTable.column() );
DBBeanConfig subConfig = DBBean.getBeanConfig( linkTable.beanClass() );
String linkTableName = linkTable.name();
String subTable = subConfig.tableName;
String idcol = (linkTable.idColumn().isEmpty() ? bean_config.tableName : linkTable.idColumn() );
// Load list from link table
String subsql = "SELECT * FROM "+subtable+" WHERE ?=?";
//String subsql = "SELECT * FROM "+linkTableName+" NATURAL JOIN "+subConfig.tableName+" WHERE "+idcol+"=?";
String subsql = "SELECT obj.* FROM "+linkTableName+" as link, "+subTable+" as obj WHERE obj."+idcol+"=? AND obj.id=link.id";
logger.finest("List Load Query: "+subsql);
PreparedStatement subStmt = db.getPreparedStatement( subsql );
subStmt.setString(1, idcol);
subStmt.setObject(2, obj.getId() );
subStmt.setObject(1, obj.getId() );
List<? extends DBBean> list = DBConnection.exec(subStmt,
DBBeanSQLResultHandler.createList(linkTable.beanClass(), db));
obj.setFieldValue(field, list);
@ -176,9 +178,7 @@ public class DBBeanSQLResultHandler<T> implements SQLResultHandler<T>{
}
return obj;
} catch (InstantiationException e) {
throw new SQLException(e);
} catch (IllegalAccessException e) {
} catch (Exception e) {
throw new SQLException(e);
}
}