use of org.nutz.dao.impl.entity.field.ManyManyLinkField in project nutz by nutzam.
the class AbstractJdbcExpert method dropRelation.
public void dropRelation(Dao dao, Entity<?> en) {
final List<Sql> sqls = new ArrayList<Sql>(5);
for (LinkField lf : en.visitManyMany(null, null, null)) {
ManyManyLinkField mm = (ManyManyLinkField) lf;
if (!dao.exists(mm.getRelationName()))
continue;
sqls.add(Sqls.create("DROP TABLE " + mm.getRelationName()));
}
dao.execute(sqls.toArray(new Sql[sqls.size()]));
}
use of org.nutz.dao.impl.entity.field.ManyManyLinkField in project nutz by nutzam.
the class DoInsertRelationLinkVisitor method visit.
public void visit(final Object obj, LinkField lnk) {
// 只有多对多的映射才被考虑
if (lnk instanceof ManyManyLinkField) {
// 获取两边映射主键的值
final ManyManyLinkField mm = (ManyManyLinkField) lnk;
Object value = lnk.getValue(obj);
final List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(Lang.length(value));
Lang.each(value, new Each<Object>() {
public void invoke(int i, Object ele, int length) throws ExitLoop, LoopException {
list.add(new RelationObjectMap(mm, obj, ele));
}
});
if (list.isEmpty())
return;
Entity<Map<String, Object>> en = holder.makeEntity(mm.getRelationName(), list.get(0));
Pojo pojo = opt.maker().makeInsert(en);
pojo.setOperatingObject(list);
for (Object p : list) pojo.addParamsBy(p);
opt.add(pojo);
}
}
use of org.nutz.dao.impl.entity.field.ManyManyLinkField in project nutz by nutzam.
the class DoUpdateRelationLinkVisitor method visit.
public void visit(Object obj, LinkField lnk) {
if (lnk instanceof ManyManyLinkField) {
ManyManyLinkField mm = (ManyManyLinkField) lnk;
Entity<?> en = opt.makeEntity(mm.getRelationName(), map);
Pojo pojo = opt.maker().makeUpdate(en, null);
pojo.setOperatingObject(map);
pojo.append(items);
opt.add(pojo);
}
}
use of org.nutz.dao.impl.entity.field.ManyManyLinkField in project nutz by nutzam.
the class DynamicEntityParsingTest method tank_many_many_link_test.
@Test
public void tank_many_many_link_test() {
pojos.initPlatoon(1);
TableName.set(1);
Entity<?> en = dao.getEntity(Tank.class);
ManyManyLinkField link = (ManyManyLinkField) en.getLinkFields("members").get(0);
assertEquals("dao_d_m_soldier_tank_1", link.getRelationName());
assertEquals("id", link.getLinkedPkNames()[0]);
assertEquals("name", link.getLinkedPkNames()[1]);
TableName.clear();
pojos.dropPlatoon(1);
}
Aggregations