Added dynamic column on linktable

This commit is contained in:
Ziver Koc 2010-09-07 19:14:13 +00:00
parent c0b6a8d479
commit 35c755e842
2 changed files with 20 additions and 8 deletions

View file

@ -125,10 +125,15 @@ public class DBBeanSQLResultHandler<T> implements SQLResultHandler<T>{
else if( List.class.isAssignableFrom( field.getType() ) &&
field.getAnnotation( DBLinkTable.class ) != null){
if(db != null){
String subtable = field.getAnnotation( DBLinkTable.class ).value().replace("\"", "");
DBLinkTable linkTable = field.getAnnotation( DBLinkTable.class );
String subtable = linkTable.name();
String idcol = (linkTable.column().isEmpty() ? bean_config.tableName : linkTable.column() );
// Load list from link table
PreparedStatement subStmt = db.getPreparedStatement("SELECT * FROM \""+subtable+"\" WHERE ?=?");
PreparedStatement subStmt = db.getPreparedStatement("SELECT * FROM ? WHERE ?=?");
subStmt.setString(1, subtable);
subStmt.setString(2, idcol);
subStmt.setObject(3, bean_config.id_field.get( obj ));
List<? extends DBBean> list = DBConnection.exec(subStmt,
DBBeanSQLResultHandler.createList((Class<? extends DBBean>)field.getType(), db));
obj.setFieldValue(field, list);