} catch (NoSuchMethodException e) {
throw new CloudRuntimeException("Write your own support for " + rawClazz + " defined by " + attr.field.getName());
}
}
CollectionTable ct = attr.field.getAnnotation(CollectionTable.class);
assert (ct.name().length() > 0) : "Please sepcify the table for " + attr.field.getName();
StringBuilder selectBuf = new StringBuilder("SELECT ");
StringBuilder insertBuf = new StringBuilder("INSERT INTO ");
StringBuilder clearBuf = new StringBuilder("DELETE FROM ");
clearBuf.append(ct.name()).append(" WHERE ");
selectBuf.append(attr.columnName);
selectBuf.append(" FROM ").append(ct.name()).append(", ").append(attr.table);
selectBuf.append(" WHERE ");
insertBuf.append(ct.name()).append("(");
StringBuilder valuesBuf = new StringBuilder("SELECT ");
for (JoinColumn jc : ct.joinColumns()) {
selectBuf.append(ct.name()).append(".").append(jc.name()).append("=");
if (jc.referencedColumnName().length() == 0) {
selectBuf.append(idAttr.table).append(".").append(idAttr.columnName);
valuesBuf.append(idAttr.table).append(".").append(idAttr.columnName);
clearBuf.append(ct.name()).append(".").append(jc.name()).append("=?");
} else {
selectBuf.append(attr.table).append(".").append(jc.referencedColumnName());
valuesBuf.append(attr.table).append(".").append(jc.referencedColumnName()).append(",");
}
selectBuf.append(" AND ");