io.ebeaninternal.server.persist.SaveManyElementCollectionMap Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ebean Show documentation
Show all versions of ebean Show documentation
composite of common runtime dependencies for all platforms
package io.ebeaninternal.server.persist;
import io.ebean.bean.EntityBean;
import io.ebeaninternal.api.SpiSqlUpdate;
import io.ebeaninternal.server.core.PersistRequestBean;
import io.ebeaninternal.server.deploy.BeanCollectionUtil;
import io.ebeaninternal.server.deploy.BeanPropertyAssocMany;
import java.util.Map;
import java.util.Set;
/**
* Save details for a simple scalar map element collection.
*/
class SaveManyElementCollectionMap extends SaveManyBase {
private Set> entries;
SaveManyElementCollectionMap(DefaultPersister persister, boolean insertedParent, BeanPropertyAssocMany> many, EntityBean parentBean, PersistRequestBean> request) {
super(persister, insertedParent, many, parentBean, request);
}
private boolean modifiedCollection() {
return entries != null && (insertedParent || BeanCollectionUtil.isModified(value));
}
@SuppressWarnings("unchecked")
@Override
void save() {
entries = (Set>) BeanCollectionUtil.getActualEntries(value);
if (modifiedCollection()) {
preElementCollectionUpdate();
if (insertedParent && request.isQueueSaveMany()) {
request.addSaveMany(this);
} else {
saveCollection();
}
}
}
@Override
public void saveBatch() {
saveCollection();
}
private void saveCollection() {
SpiSqlUpdate proto = many.insertElementCollection();
Object parentId = request.getBeanId();
for (Map.Entry, ?> entry : entries) {
final SpiSqlUpdate sqlInsert = proto.copy();
sqlInsert.setParameter(parentId);
sqlInsert.setParameter(entry.getKey());
many.bindElementValue(sqlInsert, entry.getValue());
persister.addToFlushQueueLast(sqlInsert, transaction);
}
resetModifyState();
postElementCollectionUpdate();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy