I’m inserting into a view in sqlite that has an “instead of insert” trigger on it. It doesn’t return a count of the number of rows affected. When I try to perform an insert hibernate errors with this message:
org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1; statement executed: insert into...
Is there a way to fix this on the hibernate side?
The easiest way to do this probably to write a custom MetadataContributor and call org.hibernate.mapping.PersistentClass#setCustomSQLInsert
for the entity in question. There you pass null, false, ExecuteUpdateResultCheckStyle.NONE
and this should be good to go.
1 Like
Works great. Thanks!
import static org.hibernate.engine.spi.ExecuteUpdateResultCheckStyle.NONE;
import org.hibernate.boot.spi.InFlightMetadataCollector;
import org.hibernate.boot.spi.MetadataContributor;
import org.jboss.jandex.IndexView;
import org.kohsuke.MetaInfServices;
@MetaInfServices
public class HibernateMetadataContributor implements MetadataContributor {
@Override
public void contribute(InFlightMetadataCollector metadataCollector, IndexView jandexIndex) {
metadataCollector
.getEntityBinding("info.sixcorners.maven.processor.Record")
.setCustomSQLInsert(null, false, NONE);
}
}
This is what I used.