Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

6.4 backports #8277

Merged
merged 22 commits into from
Jun 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
f7b2d0a
Allow running staged TCKs
beikov Apr 30, 2024
98d5bb3
Make identifiers case insensitive in MySQL/MariaDB
beikov Apr 30, 2024
4321d9f
Make identifiers case insensitive in MySQL/MariaDB, but retain the co…
beikov Apr 30, 2024
4168d4f
HHH-18036 Truncate time-related milliseconds when creating a java.sql…
beikov Apr 29, 2024
c789b77
HHH-18032 Add test for issue
dreab8 May 2, 2024
7d9befa
HHH-18032 CompositeId, when the id assigned by PrePersist method an H…
dreab8 May 2, 2024
58e5ea5
HHH-18027 Test mutation query reuse with parameter list expansions
quaff May 8, 2024
7b9ec40
HHH-18027 Clear expansions NonSelectQueryPlan.executeUpdate call
beikov May 23, 2024
4a372fa
Fix Oracle test missing order by expression in select distinct
mbladel May 6, 2024
f7d058e
HHH-17943 - Add test for issue
jrenaat Apr 12, 2024
f94b175
HHH-17943 - Fix for issue
jrenaat Apr 11, 2024
8bd93e3
HHH-17943 - Add test for issue
dreab8 May 20, 2024
455bd5c
HHH-17943 - Fix for issue
dreab8 May 20, 2024
8ac5399
HHH-16557 Testcase and bugfix proposal (revised by beikov)
pb00068 May 7, 2024
f428bb4
HHH-18140 Skip optimizeUnloadedDelete if there are POST_COMMIT_DELETE…
gavinking May 20, 2024
5f1ecc5
HHH-18007 Add a testcase for the issue
marko-bekhta Apr 24, 2024
09256ab
HHH-18007 Use correct expressible when checking query result type
mbladel May 2, 2024
36c2d2c
HHH-18170 Subquery randomly generating wrong SQL due to duplicate alias
May 27, 2024
8c4ef4f
HHH-17837 Add test for issue
mbladel Mar 22, 2024
be7f17f
HHH-18202 Add test for issue
mbladel May 31, 2024
1097cea
HHH-17837 HHH-18202 Backport fk rendering-side logic for associations…
mbladel Mar 22, 2024
a2a3e2e
Increase XMX for Quarkus build
beikov Jun 11, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
12 changes: 9 additions & 3 deletions ci/jpa-3.1-tck.Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ pipeline {
choice(name: 'IMAGE_JDK', choices: ['jdk11'], description: 'The JDK base image version to use for the TCK image.')
string(name: 'TCK_VERSION', defaultValue: '3.1.2', description: 'The version of the Jakarta JPA TCK i.e. `2.2.0` or `3.0.1`')
string(name: 'TCK_SHA', defaultValue: '618a9fcdb0f897cda71227ed57d035ae1dc40fc392318809a734ffc6968e43ff', description: 'The SHA256 of the Jakarta JPA TCK that is distributed under https://download.eclipse.org/jakartaee/persistence/3.1/jakarta-persistence-tck-${TCK_VERSION}.zip.sha256')
string(name: 'TCK_URL', defaultValue: '', description: 'The URL from which to download the TCK ZIP file. Only needed for testing staged builds. Ensure the TCK_VERSION variable matches the ZIP file name suffix.')
booleanParam(name: 'NO_SLEEP', defaultValue: true, description: 'Whether the NO_SLEEP patch should be applied to speed up the TCK execution')
}
stages {
Expand All @@ -50,9 +51,14 @@ pipeline {
}
dir('tck') {
checkout changelog: false, poll: false, scm: [$class: 'GitSCM', branches: [[name: '*/main']], extensions: [], userRemoteConfigs: [[url: 'https://github.com/hibernate/jakarta-tck-runner.git']]]
sh """ \
cd jpa-3.1; docker build -f Dockerfile.${params.IMAGE_JDK} -t jakarta-tck-runner --build-arg TCK_VERSION=${params.TCK_VERSION} --build-arg TCK_SHA=${params.TCK_SHA} .
"""
script {
if ( params.TCK_URL == null || params.TCK_URL.isEmpty() ) {
sh "cd jpa-3.1; docker build -f Dockerfile.${params.IMAGE_JDK} -t jakarta-tck-runner --build-arg TCK_VERSION=${params.TCK_VERSION} --build-arg TCK_SHA=${params.TCK_SHA} ."
}
else {
sh "cd jpa-3.1; docker build -f Dockerfile.${params.IMAGE_JDK} -t jakarta-tck-runner --build-arg TCK_VERSION=${params.TCK_VERSION} --build-arg TCK_SHA=${params.TCK_SHA} --build-arg TCK_URL=${params.TCK_URL} ."
}
}
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions ci/quarkus.Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,13 @@ pipeline {
sh "git clone -b 3.8 --single-branch https://github.com/quarkusio/quarkus.git . || git reset --hard && git clean -fx && git pull"
sh "sed -i 's@<hibernate-orm.version>.*</hibernate-orm.version>@<hibernate-orm.version>${env.HIBERNATE_VERSION}</hibernate-orm.version>@' bom/application/pom.xml"
// Need to override the default maven configuration this way, because there is no other way to do it
sh "sed -i 's/-Xmx5g/-Xmx1920m/' ./.mvn/jvm.config"
sh "sed -i 's/-Xmx5g/-Xmx2048m/' ./.mvn/jvm.config"
sh "echo -e '\\n-XX:MaxMetaspaceSize=768m'>>./.mvn/jvm.config"
sh "./mvnw -pl !docs -Dquickly install"
// Need to kill the gradle daemons started during the Maven install run
sh "sudo pkill -f '.*GradleDaemon.*' || true"
// Need to override the default maven configuration this way, because there is no other way to do it
sh "sed -i 's/-Xmx1920m/-Xmx1340m/' ./.mvn/jvm.config"
sh "sed -i 's/-Xmx2048m/-Xmx1340m/' ./.mvn/jvm.config"
sh "sed -i 's/MaxMetaspaceSize=768m/MaxMetaspaceSize=512m/' ./.mvn/jvm.config"
def excludes = "'!integration-tests/kafka-oauth-keycloak,!integration-tests/kafka-sasl-elytron,!integration-tests/hibernate-search-orm-opensearch,!integration-tests/maven,!integration-tests/quartz,!integration-tests/reactive-messaging-kafka,!integration-tests/resteasy-reactive-kotlin/standard,!integration-tests/opentelemetry-reactive-messaging,!integration-tests/virtual-threads/kafka-virtual-threads,!integration-tests/smallrye-jwt-oidc-webapp,!docs'"
sh "TESTCONTAINERS_RYUK_CONTAINER_PRIVILEGED=true ./mvnw -pl :quarkus-hibernate-orm -amd -pl ${excludes} verify -Dstart-containers -Dtest-containers -Dskip.gradle.build"
Expand Down
14 changes: 7 additions & 7 deletions docker_db.sh
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ mysql() {

mysql_8_0() {
$CONTAINER_CLI rm -f mysql || true
$CONTAINER_CLI run --name mysql -e MYSQL_USER=hibernate_orm_test -e MYSQL_PASSWORD=hibernate_orm_test -e MYSQL_ROOT_PASSWORD=hibernate_orm_test -e MYSQL_DATABASE=hibernate_orm_test -e MYSQL_ROOT_PASSWORD=hibernate_orm_test -p3306:3306 -d docker.io/mysql:8.0.31 --character-set-server=utf8mb4 --collation-server=utf8mb4_0900_as_cs --skip-character-set-client-handshake --log-bin-trust-function-creators=1
$CONTAINER_CLI run --name mysql -e MYSQL_USER=hibernate_orm_test -e MYSQL_PASSWORD=hibernate_orm_test -e MYSQL_ROOT_PASSWORD=hibernate_orm_test -e MYSQL_DATABASE=hibernate_orm_test -e MYSQL_ROOT_PASSWORD=hibernate_orm_test -p3306:3306 -d docker.io/mysql:8.0.31 --character-set-server=utf8mb4 --collation-server=utf8mb4_0900_as_cs --skip-character-set-client-handshake --log-bin-trust-function-creators=1 --lower_case_table_names=2
# Give the container some time to start
OUTPUT=
n=0
Expand All @@ -45,7 +45,7 @@ mysql_8_0() {

mysql_8_1() {
$CONTAINER_CLI rm -f mysql || true
$CONTAINER_CLI run --name mysql -e MYSQL_USER=hibernate_orm_test -e MYSQL_PASSWORD=hibernate_orm_test -e MYSQL_ROOT_PASSWORD=hibernate_orm_test -e MYSQL_DATABASE=hibernate_orm_test -e MYSQL_ROOT_PASSWORD=hibernate_orm_test -p3306:3306 -d docker.io/mysql:8.1.0 --character-set-server=utf8mb4 --collation-server=utf8mb4_0900_as_cs --skip-character-set-client-handshake --log-bin-trust-function-creators=1
$CONTAINER_CLI run --name mysql -e MYSQL_USER=hibernate_orm_test -e MYSQL_PASSWORD=hibernate_orm_test -e MYSQL_ROOT_PASSWORD=hibernate_orm_test -e MYSQL_DATABASE=hibernate_orm_test -e MYSQL_ROOT_PASSWORD=hibernate_orm_test -p3306:3306 -d docker.io/mysql:8.1.0 --character-set-server=utf8mb4 --collation-server=utf8mb4_0900_as_cs --skip-character-set-client-handshake --log-bin-trust-function-creators=1 --lower_case_table_names=2
# Give the container some time to start
OUTPUT=
n=0
Expand All @@ -69,7 +69,7 @@ mysql_8_1() {

mysql_8_2() {
$CONTAINER_CLI rm -f mysql || true
$CONTAINER_CLI run --name mysql -e MYSQL_USER=hibernate_orm_test -e MYSQL_PASSWORD=hibernate_orm_test -e MYSQL_ROOT_PASSWORD=hibernate_orm_test -e MYSQL_DATABASE=hibernate_orm_test -e MYSQL_ROOT_PASSWORD=hibernate_orm_test -p3306:3306 -d docker.io/mysql:8.2.0 --character-set-server=utf8mb4 --collation-server=utf8mb4_0900_as_cs --skip-character-set-client-handshake --log-bin-trust-function-creators=1
$CONTAINER_CLI run --name mysql -e MYSQL_USER=hibernate_orm_test -e MYSQL_PASSWORD=hibernate_orm_test -e MYSQL_ROOT_PASSWORD=hibernate_orm_test -e MYSQL_DATABASE=hibernate_orm_test -e MYSQL_ROOT_PASSWORD=hibernate_orm_test -p3306:3306 -d docker.io/mysql:8.2.0 --character-set-server=utf8mb4 --collation-server=utf8mb4_0900_as_cs --skip-character-set-client-handshake --log-bin-trust-function-creators=1 --lower_case_table_names=2
# Give the container some time to start
OUTPUT=
n=0
Expand Down Expand Up @@ -97,7 +97,7 @@ mariadb() {

mariadb_10_4() {
$CONTAINER_CLI rm -f mariadb || true
$CONTAINER_CLI run --name mariadb -e MYSQL_USER=hibernate_orm_test -e MYSQL_PASSWORD=hibernate_orm_test -e MYSQL_DATABASE=hibernate_orm_test -e MYSQL_ROOT_PASSWORD=hibernate_orm_test -p3306:3306 -d docker.io/mariadb:10.4.31 --character-set-server=utf8mb4 --collation-server=utf8mb4_bin --skip-character-set-client-handshake
$CONTAINER_CLI run --name mariadb -e MYSQL_USER=hibernate_orm_test -e MYSQL_PASSWORD=hibernate_orm_test -e MYSQL_DATABASE=hibernate_orm_test -e MYSQL_ROOT_PASSWORD=hibernate_orm_test -p3306:3306 -d docker.io/mariadb:10.4.31 --character-set-server=utf8mb4 --collation-server=utf8mb4_bin --skip-character-set-client-handshake --lower_case_table_names=2
OUTPUT=
n=0
until [ "$n" -ge 5 ]
Expand All @@ -120,7 +120,7 @@ mariadb_10_4() {

mariadb_10_9() {
$CONTAINER_CLI rm -f mariadb || true
$CONTAINER_CLI run --name mariadb -e MYSQL_USER=hibernate_orm_test -e MYSQL_PASSWORD=hibernate_orm_test -e MYSQL_DATABASE=hibernate_orm_test -e MYSQL_ROOT_PASSWORD=hibernate_orm_test -p3306:3306 -d docker.io/mariadb:10.9.3 --character-set-server=utf8mb4 --collation-server=utf8mb4_bin --skip-character-set-client-handshake
$CONTAINER_CLI run --name mariadb -e MYSQL_USER=hibernate_orm_test -e MYSQL_PASSWORD=hibernate_orm_test -e MYSQL_DATABASE=hibernate_orm_test -e MYSQL_ROOT_PASSWORD=hibernate_orm_test -p3306:3306 -d docker.io/mariadb:10.9.3 --character-set-server=utf8mb4 --collation-server=utf8mb4_bin --skip-character-set-client-handshake --lower_case_table_names=2
OUTPUT=
n=0
until [ "$n" -ge 5 ]
Expand All @@ -143,7 +143,7 @@ mariadb_10_9() {

mariadb_11_1() {
$CONTAINER_CLI rm -f mariadb || true
$CONTAINER_CLI run --name mariadb -e MYSQL_USER=hibernate_orm_test -e MYSQL_PASSWORD=hibernate_orm_test -e MYSQL_DATABASE=hibernate_orm_test -e MYSQL_ROOT_PASSWORD=hibernate_orm_test -p3306:3306 -d docker.io/mariadb:11.1.2 --character-set-server=utf8mb4 --collation-server=utf8mb4_bin --skip-character-set-client-handshake
$CONTAINER_CLI run --name mariadb -e MYSQL_USER=hibernate_orm_test -e MYSQL_PASSWORD=hibernate_orm_test -e MYSQL_DATABASE=hibernate_orm_test -e MYSQL_ROOT_PASSWORD=hibernate_orm_test -p3306:3306 -d docker.io/mariadb:11.1.2 --character-set-server=utf8mb4 --collation-server=utf8mb4_bin --skip-character-set-client-handshake --lower_case_table_names=2
OUTPUT=
n=0
until [ "$n" -ge 5 ]
Expand All @@ -166,7 +166,7 @@ mariadb_11_1() {

mariadb_11_3() {
$CONTAINER_CLI rm -f mariadb || true
$CONTAINER_CLI run --name mariadb -e MYSQL_USER=hibernate_orm_test -e MYSQL_PASSWORD=hibernate_orm_test -e MYSQL_DATABASE=hibernate_orm_test -e MYSQL_ROOT_PASSWORD=hibernate_orm_test -p3306:3306 -d docker.io/mariadb:11.3.1-rc --character-set-server=utf8mb4 --collation-server=utf8mb4_bin --skip-character-set-client-handshake
$CONTAINER_CLI run --name mariadb -e MYSQL_USER=hibernate_orm_test -e MYSQL_PASSWORD=hibernate_orm_test -e MYSQL_DATABASE=hibernate_orm_test -e MYSQL_ROOT_PASSWORD=hibernate_orm_test -p3306:3306 -d docker.io/mariadb:11.3.1-rc --character-set-server=utf8mb4 --collation-server=utf8mb4_bin --skip-character-set-client-handshake --lower_case_table_names=2
OUTPUT=
n=0
until [ "$n" -ge 5 ]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ protected void postDeleteLoaded(
final EntityKey key = entry.getEntityKey();
persistenceContext.removeEntityHolder( key );
removeCacheItem( ck );
persistenceContext.getNaturalIdResolutions().removeSharedResolution( id, naturalIdValues, persister );
persistenceContext.getNaturalIdResolutions().removeSharedResolution( id, naturalIdValues, persister, true);
postDelete();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -684,6 +684,11 @@ public SqmMultiTableInsertStrategy getFallbackSqmInsertStrategy(
);
}

@Override
public String getTemporaryTableCreateOptions() {
return "TRANSACTIONAL";
}

@Override
public TemporaryTableKind getSupportedTemporaryTableKind() {
return TemporaryTableKind.LOCAL;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -433,6 +433,11 @@ private void manageSharedResolution(

@Override
public void removeSharedResolution(Object id, Object naturalId, EntityMappingType entityDescriptor) {
removeSharedResolution( id, naturalId, entityDescriptor, false );
}

@Override
public void removeSharedResolution(Object id, Object naturalId, EntityMappingType entityDescriptor, boolean delayToAfterTransactionCompletion) {
final NaturalIdMapping naturalIdMapping = entityDescriptor.getNaturalIdMapping();
if ( naturalIdMapping == null ) {
// nothing to do
Expand All @@ -453,7 +458,18 @@ public void removeSharedResolution(Object id, Object naturalId, EntityMappingTyp
final EntityPersister persister = locatePersisterForKey( entityDescriptor.getEntityPersister() );

final Object naturalIdCacheKey = cacheAccess.generateCacheKey( naturalId, persister, session() );
cacheAccess.evict( naturalIdCacheKey );
if ( delayToAfterTransactionCompletion ) {
session().asEventSource().getActionQueue().registerProcess(
(success, session) -> {
if ( success ) {
cacheAccess.evict( naturalIdCacheKey );
}
}
);
}
else {
cacheAccess.evict( naturalIdCacheKey );
}

// if ( sessionCachedNaturalIdValues != null
// && !Arrays.equals( sessionCachedNaturalIdValues, deletedNaturalIdValues ) ) {
Expand All @@ -479,7 +495,7 @@ public void handleSynchronization(Object pk, Object entity, EntityMappingType en
cacheResolution( pk, naturalIdValuesFromCurrentObjectState, persister );
stashInvalidNaturalIdReference( persister, cachedNaturalIdValues );

removeSharedResolution( pk, cachedNaturalIdValues, persister );
removeSharedResolution( pk, cachedNaturalIdValues, persister, false );
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,12 @@ void manageSharedResolution(
/**
* Removes any cross-reference from the L2 cache
*/
void removeSharedResolution(Object id, Object naturalId, EntityMappingType entityDescriptor);

void removeSharedResolution(Object id, Object naturalId, EntityMappingType entityDescriptor, boolean delayToAfterTransactionCompletion);

default void removeSharedResolution(Object id, Object naturalId, EntityMappingType entityDescriptor) {
removeSharedResolution( id, naturalId, entityDescriptor, false );
}

/**
* Find the cached natural-id for the given identifier
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import org.hibernate.engine.spi.Status;
import org.hibernate.event.spi.EventSource;
import org.hibernate.id.Assigned;
import org.hibernate.id.CompositeNestedGeneratedValueGenerator;
import org.hibernate.id.IdentifierGenerationException;
import org.hibernate.internal.CoreLogging;
import org.hibernate.internal.CoreMessageLogger;
Expand Down Expand Up @@ -197,7 +198,8 @@ protected Object performSave(

processIfSelfDirtinessTracker( entity, SelfDirtinessTracker::$$_hibernate_clearDirtyAttributes );

if ( persister.getGenerator() instanceof Assigned ) {
final Generator generator = persister.getGenerator();
if ( generator instanceof Assigned || generator instanceof CompositeNestedGeneratedValueGenerator ) {
id = persister.getIdentifier( entity, source );
if ( id == null ) {
throw new IdentifierGenerationException(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,7 @@ private static boolean hasCustomEventListeners(EventSource source) {
// Bean Validation adds a PRE_DELETE listener
// and Envers adds a POST_DELETE listener
return fss.eventListenerGroup_PRE_DELETE.count() > 0
|| fss.eventListenerGroup_POST_COMMIT_DELETE.count() > 0
|| fss.eventListenerGroup_POST_DELETE.count() > 1
|| fss.eventListenerGroup_POST_DELETE.count() == 1
&& !(fss.eventListenerGroup_POST_DELETE.listeners().iterator().next()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,4 +59,9 @@ default int forEachSelectable(SelectableConsumer consumer) {
default boolean hasPartitionedSelectionMapping() {
return isPartitioned();
}

@Override
default BasicValuedModelPart asBasicValuedModelPart() {
return this;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
*/
package org.hibernate.metamodel.mapping;

import java.util.Set;

import org.hibernate.sql.ast.tree.from.TableGroupJoinProducer;

/**
Expand All @@ -21,6 +23,8 @@ default String getFetchableName() {

EntityMappingType getAssociatedEntityMappingType();

Set<String> getTargetKeyPropertyNames();

/**
* The model sub-part relative to the associated entity type that is the target
* of this association's foreign-key
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,11 @@ default EntityMappingType asEntityMappingType(){
return null;
}

@Nullable
default BasicValuedModelPart asBasicValuedModelPart() {
return null;
}

/**
* A short hand form of {@link #breakDownJdbcValues(Object, int, Object, Object, JdbcValueBiConsumer, SharedSessionContractImplementor)},
* that passes 0 as offset and null for the two values {@code X} and {@code Y}.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public abstract class AbstractEntityCollectionPart implements EntityCollectionPa
private final EntityMappingType associatedEntityTypeDescriptor;
private final NotFoundAction notFoundAction;

private final Set<String> targetKeyPropertyNames;
protected final Set<String> targetKeyPropertyNames;

public AbstractEntityCollectionPart(
Nature nature,
Expand Down Expand Up @@ -110,10 +110,6 @@ public EntityMappingType getMappedType() {
return getAssociatedEntityMappingType();
}

protected Set<String> getTargetKeyPropertyNames() {
return targetKeyPropertyNames;
}

@Override
public NavigableRole getNavigableRole() {
return navigableRole;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
package org.hibernate.metamodel.mapping.internal;

import java.util.Locale;
import java.util.Set;
import java.util.function.Consumer;

import org.hibernate.annotations.NotFoundAction;
Expand Down Expand Up @@ -135,6 +136,11 @@ public ModelPart findSubPart(String name, EntityMappingType targetType) {
return super.findSubPart( name, targetType );
}

@Override
public Set<String> getTargetKeyPropertyNames() {
return targetKeyPropertyNames;
}

@Override
public <X, Y> int breakDownJdbcValues(
Object domainValue,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -891,6 +891,7 @@ public String getTargetKeyPropertyName() {
return targetKeyPropertyName;
}

@Override
public Set<String> getTargetKeyPropertyNames() {
return targetKeyPropertyNames;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4115,7 +4115,7 @@ private void handleNaturalIdReattachment(Object entity, SharedSessionContractImp
? null
: naturalIdMapping.extractNaturalIdFromEntityState( entitySnapshot );

naturalIdResolutions.removeSharedResolution( id, naturalIdSnapshot, this );
naturalIdResolutions.removeSharedResolution( id, naturalIdSnapshot, this, false );
final Object naturalId = naturalIdMapping.extractNaturalIdFromEntity( entity );
naturalIdResolutions.manageLocalResolution( id, naturalId, this, CachedNaturalIdValueSource.UPDATE );
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -315,7 +315,7 @@ protected static <T> void checkQueryReturnType(
}

if ( !sessionFactory.getSessionFactoryOptions().getJpaCompliance().isJpaQueryComplianceEnabled() ) {
verifyResultType( expectedResultClass, sqmSelection.getNodeType() );
verifyResultType( expectedResultClass, sqmSelection.getExpressible() );
}
}
// else, let's assume we can instantiate it!
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -701,7 +701,12 @@ protected void verifyUpdate() {
}

protected int doExecuteUpdate() {
return resolveNonSelectQueryPlan().executeUpdate( this );
try {
return resolveNonSelectQueryPlan().executeUpdate( this );
}
finally {
domainParameterXref.clearExpansions();
}
}

private NonSelectQueryPlan resolveNonSelectQueryPlan() {
Expand Down