Repository navigation
v0.4.0
Nothing is frozen yet: every public type stays @Incubating, and the freeze review moves to the next milestone, after an
adopter runs 0.4.0 in production (D-111, D-118). No existing API changes incompatibly; the additions below are all
@Incubating.
Added
- Entity writes (RFC 0005, D-118), described in the "Bulk writes" and "Inserts" pages of the user guide:
throughEntities()on aModelUpdateorModelDelete: each chunk loads its entities by key and writes them
through the metamodel, so entity callbacks, the provider's listeners, audit libraries, Bean Validation, cascades
and@SQLDeleterun. Always chunked; the count is the entities matched.MQ1610forkeepVersion(),
expectVersion(...)orsetExpressioncombined with it, whatever the call order. An update writes attributes
through the provider'sEntityWriteSupport(ProviderSupport#entityWrites(), Hibernate's included), so a proxy
already in the persistence context and a bytecode-enhanced entity are written; without one, a proxy isMQ2503
(D-119).persist(persist, returning)onModelQueryExecutorandModelQueryRepository: returns a query model built from
the flushed entity with no second select;MQ1809for a query clause or column it cannot fill.WriteAssignment,WriteKindandModelQueryConfig.writeAssignments: a server-set column named once per
entity and applied by bulk update (chunked and entity mode), insert-values, insert-select,doUpdateand
persist, skipped where the write sets the attribute itself.MQ1611andMQ1612for a path or value that
does not fit, or on a strict subclass of the write's root. In an entity-mode update an assignment dirties a
row only where its value differs (R-WRT-49).- The Spring Boot starter hands every
WriteAssignmentbean to the config of each datasource; an application's own
ModelQueryConfigbean that drops one fails startup withMQ4006. - The Spring Boot sample's
POST /booksreturns the persistedSavedBook, and its updated-at column is a
WriteAssignmentbean.
MQ1610toMQ1612,MQ1809andMQ2503; see the diagnostics reference.
Changed
ModelQueryExecutor,ModelQueryRepository,ModelUpdate,ModelDeleteandModelQueryConfiggain the methods
above. They are@Incubatingor@EngineFacing, sojapicmpignores them.
Full Changelog: v0.3.0...v0.4.0