HHH-14977 - @Where is broken in 6.0
`@Where` and `@Filter` fragments are now fully handled as AST - each fragment gets its own Predicate instance. Some more work coming to clean up methods we no longer use which require the old String-manip approach.
This commit is contained in:
parent
98c9cf136c
commit
335a4d62e3
|
@ -916,10 +916,6 @@ public abstract class AbstractCollectionPersister
|
||||||
return collectionType;
|
return collectionType;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected String getSQLWhereString(String alias) {
|
|
||||||
return StringHelper.replace( sqlWhereStringTemplate, Template.TEMPLATE, alias );
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getSQLOrderByString(String alias) {
|
public String getSQLOrderByString(String alias) {
|
||||||
// return hasOrdering()
|
// return hasOrdering()
|
||||||
|
@ -1877,23 +1873,21 @@ public abstract class AbstractCollectionPersister
|
||||||
alias = tableReference.getTableExpression();
|
alias = tableReference.getTableExpression();
|
||||||
}
|
}
|
||||||
|
|
||||||
applyLegacyNamedFilterFragment( predicateConsumer, alias, tableGroup, creationState );
|
applyWhereFragments( predicateConsumer, alias, tableGroup, creationState );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
protected void applyWhereFragments(
|
||||||
* Replaces {@link #filterFragment(String)} and {@link #filterFragment(String, Set)}
|
|
||||||
*
|
|
||||||
* @todo (6.0) - drop these 2 ^^
|
|
||||||
*/
|
|
||||||
protected void applyLegacyNamedFilterFragment(
|
|
||||||
Consumer<Predicate> predicateConsumer,
|
Consumer<Predicate> predicateConsumer,
|
||||||
String alias,
|
String alias,
|
||||||
TableGroup tableGroup,
|
TableGroup tableGroup,
|
||||||
SqlAstCreationState astCreationState) {
|
SqlAstCreationState astCreationState) {
|
||||||
applyWhereRestriction( sqlWhereStringTemplate, alias, predicateConsumer );
|
applyWhereFragments( predicateConsumer, alias, sqlWhereStringTemplate );
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void applyWhereRestriction(String template, String alias, Consumer<Predicate> predicateConsumer) {
|
/**
|
||||||
|
* Applies all defined {@link org.hibernate.annotations.Where}
|
||||||
|
*/
|
||||||
|
private static void applyWhereFragments(Consumer<Predicate> predicateConsumer, String alias, String template) {
|
||||||
if ( template == null ) {
|
if ( template == null ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1906,14 +1900,6 @@ public abstract class AbstractCollectionPersister
|
||||||
predicateConsumer.accept( new SqlFragmentPredicate( fragment ) );
|
predicateConsumer.accept( new SqlFragmentPredicate( fragment ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
protected String filterFragment(String alias) throws MappingException {
|
|
||||||
return hasWhere() ? getSQLWhereString( alias ) : "";
|
|
||||||
}
|
|
||||||
|
|
||||||
protected String filterFragment(String alias, Set<String> treatAsDeclarations) throws MappingException {
|
|
||||||
return hasWhere() ? getSQLWhereString( alias ) : "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void applyFilterRestrictions(Consumer<Predicate> predicateConsumer, TableGroup tableGroup, boolean useQualifier, Map<String, Filter> enabledFilters, SqlAstCreationState creationState) {
|
public void applyFilterRestrictions(Consumer<Predicate> predicateConsumer, TableGroup tableGroup, boolean useQualifier, Map<String, Filter> enabledFilters, SqlAstCreationState creationState) {
|
||||||
if ( filterHelper != null ) {
|
if ( filterHelper != null ) {
|
||||||
|
@ -1954,7 +1940,7 @@ public abstract class AbstractCollectionPersister
|
||||||
alias = tableReference.getTableExpression();
|
alias = tableReference.getTableExpression();
|
||||||
}
|
}
|
||||||
|
|
||||||
applyWhereRestriction( manyToManyWhereTemplate, alias, predicateConsumer );
|
applyWhereFragments( predicateConsumer, alias, manyToManyWhereTemplate );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2094,77 +2080,6 @@ public abstract class AbstractCollectionPersister
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String filterFragment(
|
|
||||||
String alias,
|
|
||||||
Map<String, Filter> enabledFilters,
|
|
||||||
Set<String> treatAsDeclarations) {
|
|
||||||
final StringBuilder sessionFilterFragment = new StringBuilder();
|
|
||||||
|
|
||||||
if ( filterHelper != null ) {
|
|
||||||
filterHelper.render( sessionFilterFragment, getFilterAliasGenerator(alias), enabledFilters );
|
|
||||||
}
|
|
||||||
|
|
||||||
final String filterFragment = filterFragment( alias, treatAsDeclarations );
|
|
||||||
if ( sessionFilterFragment.length() != 0
|
|
||||||
&& !filterFragment.isEmpty() ) {
|
|
||||||
sessionFilterFragment.append( " and " );
|
|
||||||
}
|
|
||||||
|
|
||||||
return sessionFilterFragment.append( filterFragment ).toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String filterFragment(
|
|
||||||
TableGroup tableGroup,
|
|
||||||
Map<String, Filter> enabledFilters,
|
|
||||||
Set<String> treatAsDeclarations,
|
|
||||||
boolean useIdentificationVariable) {
|
|
||||||
TableReference tableReference;
|
|
||||||
if ( isManyToMany() ) {
|
|
||||||
// if filtering on many-to-many element were intended, getManyToManyFilterFragment() should have been chosen
|
|
||||||
tableReference = tableGroup.getPrimaryTableReference();
|
|
||||||
}
|
|
||||||
else if ( elementPersister instanceof Joinable ) {
|
|
||||||
tableReference = tableGroup.getTableReference( tableGroup.getNavigablePath(), ( (Joinable) elementPersister ).getTableName() );
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
tableReference = tableGroup.getTableReference( tableGroup.getNavigablePath(), qualifiedTableName );
|
|
||||||
}
|
|
||||||
|
|
||||||
final String alias;
|
|
||||||
if ( tableReference == null ) {
|
|
||||||
alias = null;
|
|
||||||
}
|
|
||||||
else if ( useIdentificationVariable && tableReference.getIdentificationVariable() != null ) {
|
|
||||||
alias = tableReference.getIdentificationVariable();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
alias = tableReference.getTableExpression();
|
|
||||||
}
|
|
||||||
|
|
||||||
final StringBuilder sessionFilterFragment = new StringBuilder();
|
|
||||||
if ( filterHelper != null ) {
|
|
||||||
filterHelper.render( sessionFilterFragment, getFilterAliasGenerator( tableGroup ), enabledFilters );
|
|
||||||
}
|
|
||||||
final String filterFragment = filterFragment( alias, treatAsDeclarations );
|
|
||||||
if ( sessionFilterFragment.length() != 0 && !filterFragment.isEmpty() ) {
|
|
||||||
sessionFilterFragment.append( " and " );
|
|
||||||
}
|
|
||||||
|
|
||||||
return sessionFilterFragment.append( filterFragment ).toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String oneToManyFilterFragment(String alias) throws MappingException {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String oneToManyFilterFragment(String alias, Set<String> treatAsDeclarations) {
|
|
||||||
return oneToManyFilterFragment( alias );
|
|
||||||
}
|
|
||||||
|
|
||||||
protected boolean isInsertCallable() {
|
protected boolean isInsertCallable() {
|
||||||
return insertCallable;
|
return insertCallable;
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,6 @@ package org.hibernate.persister.collection;
|
||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Set;
|
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
import org.hibernate.HibernateException;
|
import org.hibernate.HibernateException;
|
||||||
|
@ -20,7 +19,6 @@ import org.hibernate.collection.spi.PersistentCollection;
|
||||||
import org.hibernate.engine.jdbc.batch.internal.BasicBatchKey;
|
import org.hibernate.engine.jdbc.batch.internal.BasicBatchKey;
|
||||||
import org.hibernate.engine.spi.SharedSessionContractImplementor;
|
import org.hibernate.engine.spi.SharedSessionContractImplementor;
|
||||||
import org.hibernate.internal.FilterAliasGenerator;
|
import org.hibernate.internal.FilterAliasGenerator;
|
||||||
import org.hibernate.internal.util.StringHelper;
|
|
||||||
import org.hibernate.internal.util.collections.ArrayHelper;
|
import org.hibernate.internal.util.collections.ArrayHelper;
|
||||||
import org.hibernate.jdbc.Expectation;
|
import org.hibernate.jdbc.Expectation;
|
||||||
import org.hibernate.jdbc.Expectations;
|
import org.hibernate.jdbc.Expectations;
|
||||||
|
@ -199,8 +197,8 @@ public class OneToManyPersister extends AbstractCollectionPersister {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void writeIndex(
|
private void writeIndex(
|
||||||
PersistentCollection collection,
|
PersistentCollection<?> collection,
|
||||||
Iterator entries,
|
Iterator<?> entries,
|
||||||
Object id,
|
Object id,
|
||||||
boolean resetIndex,
|
boolean resetIndex,
|
||||||
SharedSessionContractImplementor session) {
|
SharedSessionContractImplementor session) {
|
||||||
|
@ -342,7 +340,7 @@ public class OneToManyPersister extends AbstractCollectionPersister {
|
||||||
// update removed rows fks to null
|
// update removed rows fks to null
|
||||||
try {
|
try {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
Iterator entries = collection.entries( this );
|
Iterator<?> entries = collection.entries( this );
|
||||||
int offset = 1;
|
int offset = 1;
|
||||||
while ( entries.hasNext() ) {
|
while ( entries.hasNext() ) {
|
||||||
Object entry = entries.next();
|
Object entry = entries.next();
|
||||||
|
@ -413,7 +411,7 @@ public class OneToManyPersister extends AbstractCollectionPersister {
|
||||||
// now update all changed or added rows fks
|
// now update all changed or added rows fks
|
||||||
try {
|
try {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
Iterator entries = collection.entries( this );
|
Iterator<?> entries = collection.entries( this );
|
||||||
while ( entries.hasNext() ) {
|
while ( entries.hasNext() ) {
|
||||||
Object entry = entries.next();
|
Object entry = entries.next();
|
||||||
int offset = 1;
|
int offset = 1;
|
||||||
|
@ -486,12 +484,21 @@ public class OneToManyPersister extends AbstractCollectionPersister {
|
||||||
return ( (Joinable) getElementPersister() ).getTableName();
|
return ( (Joinable) getElementPersister() ).getTableName();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void applyLegacyNamedFilterFragment(
|
@Override
|
||||||
|
public void applyWhereRestrictions(
|
||||||
|
Consumer<Predicate> predicateConsumer,
|
||||||
|
TableGroup tableGroup,
|
||||||
|
boolean useQualifier,
|
||||||
|
SqlAstCreationState creationState) {
|
||||||
|
super.applyWhereRestrictions( predicateConsumer, tableGroup, useQualifier, creationState );
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void applyWhereFragments(
|
||||||
Consumer<Predicate> predicateConsumer,
|
Consumer<Predicate> predicateConsumer,
|
||||||
String alias,
|
String alias,
|
||||||
TableGroup tableGroup,
|
TableGroup tableGroup,
|
||||||
SqlAstCreationState astCreationState) {
|
SqlAstCreationState astCreationState) {
|
||||||
super.applyLegacyNamedFilterFragment( predicateConsumer, alias, tableGroup, astCreationState );
|
super.applyWhereFragments( predicateConsumer, alias, tableGroup, astCreationState );
|
||||||
|
|
||||||
getElementPersisterInternal().applyDiscriminator(
|
getElementPersisterInternal().applyDiscriminator(
|
||||||
predicateConsumer,
|
predicateConsumer,
|
||||||
|
@ -501,31 +508,6 @@ public class OneToManyPersister extends AbstractCollectionPersister {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String filterFragment(String alias) throws MappingException {
|
|
||||||
String result = super.filterFragment( alias );
|
|
||||||
if ( getElementPersister() instanceof Joinable ) {
|
|
||||||
result += ( (Joinable) getElementPersister() ).oneToManyFilterFragment( alias );
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String filterFragment(String alias, Set<String> treatAsDeclarations) throws MappingException {
|
|
||||||
String result = super.filterFragment( alias );
|
|
||||||
if ( getElementPersister() instanceof Joinable ) {
|
|
||||||
final String associationFilter = ( (Joinable) getElementPersister() ).oneToManyFilterFragment( alias, treatAsDeclarations );
|
|
||||||
if ( StringHelper.isEmpty( result ) ) {
|
|
||||||
result = associationFilter;
|
|
||||||
}
|
|
||||||
else if ( StringHelper.isNotEmpty( associationFilter ) ) {
|
|
||||||
result += " and " + associationFilter;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FilterAliasGenerator getFilterAliasGenerator(String rootAlias) {
|
public FilterAliasGenerator getFilterAliasGenerator(String rootAlias) {
|
||||||
return getElementPersister().getFilterAliasGenerator( rootAlias );
|
return getElementPersister().getFilterAliasGenerator( rootAlias );
|
||||||
|
|
|
@ -232,11 +232,9 @@ import org.hibernate.sql.ast.tree.expression.Expression;
|
||||||
import org.hibernate.sql.ast.tree.expression.JdbcParameter;
|
import org.hibernate.sql.ast.tree.expression.JdbcParameter;
|
||||||
import org.hibernate.sql.ast.tree.from.StandardTableGroup;
|
import org.hibernate.sql.ast.tree.from.StandardTableGroup;
|
||||||
import org.hibernate.sql.ast.tree.from.TableGroup;
|
import org.hibernate.sql.ast.tree.from.TableGroup;
|
||||||
import org.hibernate.sql.ast.tree.from.TableGroupJoin;
|
|
||||||
import org.hibernate.sql.ast.tree.from.TableReference;
|
import org.hibernate.sql.ast.tree.from.TableReference;
|
||||||
import org.hibernate.sql.ast.tree.from.TableReferenceJoin;
|
import org.hibernate.sql.ast.tree.from.TableReferenceJoin;
|
||||||
import org.hibernate.sql.ast.tree.predicate.ComparisonPredicate;
|
import org.hibernate.sql.ast.tree.predicate.ComparisonPredicate;
|
||||||
import org.hibernate.sql.ast.tree.predicate.FilterPredicate;
|
|
||||||
import org.hibernate.sql.ast.tree.predicate.Junction;
|
import org.hibernate.sql.ast.tree.predicate.Junction;
|
||||||
import org.hibernate.sql.ast.tree.predicate.Predicate;
|
import org.hibernate.sql.ast.tree.predicate.Predicate;
|
||||||
import org.hibernate.sql.ast.tree.select.QuerySpec;
|
import org.hibernate.sql.ast.tree.select.QuerySpec;
|
||||||
|
@ -4044,55 +4042,6 @@ public abstract class AbstractEntityPersister
|
||||||
protected abstract String filterFragment(String alias, Set<String> treatAsDeclarations);
|
protected abstract String filterFragment(String alias, Set<String> treatAsDeclarations);
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String filterFragment(String alias, Map<String, Filter> enabledFilters, Set<String> treatAsDeclarations) {
|
|
||||||
if ( filterHelper == null ) {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
final StringBuilder sessionFilterFragment = new StringBuilder();
|
|
||||||
if ( filterHelper != null ) {
|
|
||||||
filterHelper.render( sessionFilterFragment, alias == null ? null : getFilterAliasGenerator( alias ), enabledFilters );
|
|
||||||
}
|
|
||||||
final String filterFragment = filterFragment( alias, treatAsDeclarations );
|
|
||||||
if ( sessionFilterFragment.length() != 0 && !filterFragment.isEmpty() ) {
|
|
||||||
sessionFilterFragment.append( " and " );
|
|
||||||
}
|
|
||||||
return sessionFilterFragment.append( filterFragment ).toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String filterFragment(
|
|
||||||
TableGroup tableGroup,
|
|
||||||
Map<String, Filter> enabledFilters,
|
|
||||||
Set<String> treatAsDeclarations,
|
|
||||||
boolean useIdentificationVariable) {
|
|
||||||
if ( filterHelper == null ) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
final String alias;
|
|
||||||
if ( tableGroup == null ) {
|
|
||||||
alias = null;
|
|
||||||
}
|
|
||||||
else if ( useIdentificationVariable && tableGroup.getPrimaryTableReference().getIdentificationVariable() != null ) {
|
|
||||||
alias = tableGroup.getPrimaryTableReference().getIdentificationVariable();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
alias = tableGroup.getPrimaryTableReference().getTableExpression();
|
|
||||||
}
|
|
||||||
|
|
||||||
final StringBuilder sessionFilterFragment = new StringBuilder();
|
|
||||||
if ( filterHelper != null ) {
|
|
||||||
filterHelper.render( sessionFilterFragment, !useIdentificationVariable || tableGroup == null ? null : getFilterAliasGenerator( tableGroup ), enabledFilters );
|
|
||||||
}
|
|
||||||
final String filterFragment = filterFragment( alias, treatAsDeclarations );
|
|
||||||
if ( sessionFilterFragment.length() != 0 && !filterFragment.isEmpty() ) {
|
|
||||||
sessionFilterFragment.append( " and " );
|
|
||||||
}
|
|
||||||
return sessionFilterFragment.append( filterFragment ).toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
public String generateWhereConditionAlias(String alias) {
|
public String generateWhereConditionAlias(String alias) {
|
||||||
return alias;
|
return alias;
|
||||||
}
|
}
|
||||||
|
@ -4101,15 +4050,6 @@ public abstract class AbstractEntityPersister
|
||||||
return rootAlias;
|
return rootAlias;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String oneToManyFilterFragment(String alias) throws MappingException {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String oneToManyFilterFragment(String alias, Set<String> treatAsDeclarations) {
|
|
||||||
return oneToManyFilterFragment( alias );
|
|
||||||
}
|
|
||||||
|
|
||||||
protected boolean isSubclassTableLazy(int j) {
|
protected boolean isSubclassTableLazy(int j) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,14 +6,7 @@
|
||||||
*/
|
*/
|
||||||
package org.hibernate.persister.entity;
|
package org.hibernate.persister.entity;
|
||||||
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import org.hibernate.Filter;
|
|
||||||
import org.hibernate.MappingException;
|
|
||||||
import org.hibernate.metamodel.mapping.Restrictable;
|
import org.hibernate.metamodel.mapping.Restrictable;
|
||||||
import org.hibernate.sql.ast.tree.from.TableGroup;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Anything that can be loaded by outer join - namely
|
* Anything that can be loaded by outer join - namely
|
||||||
|
@ -38,28 +31,6 @@ public interface Joinable extends Restrictable {
|
||||||
*/
|
*/
|
||||||
public String[] getKeyColumnNames();
|
public String[] getKeyColumnNames();
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the where clause filter, given a query alias and considering enabled session filters
|
|
||||||
*/
|
|
||||||
public default String filterFragment(String alias, Map<String, Filter> enabledFilters) throws MappingException {
|
|
||||||
return filterFragment( alias, enabledFilters, Collections.emptySet() );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the where clause filter, given a query alias and considering enabled session filters
|
|
||||||
*/
|
|
||||||
public String filterFragment(String alias, Map<String, Filter> enabledFilters, Set<String> treatAsDeclarations) throws MappingException;
|
|
||||||
|
|
||||||
public String filterFragment(
|
|
||||||
TableGroup tableGroup,
|
|
||||||
Map<String, Filter> enabledFilters,
|
|
||||||
Set<String> treatAsDeclarations,
|
|
||||||
boolean useIdentificationVariable) throws MappingException;
|
|
||||||
|
|
||||||
public String oneToManyFilterFragment(String alias) throws MappingException;
|
|
||||||
|
|
||||||
public String oneToManyFilterFragment(String alias, Set<String> treatAsDeclarations);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Is this instance actually a CollectionPersister?
|
* Is this instance actually a CollectionPersister?
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -22,7 +22,6 @@ import org.hibernate.boot.model.relational.Database;
|
||||||
import org.hibernate.cache.spi.access.EntityDataAccess;
|
import org.hibernate.cache.spi.access.EntityDataAccess;
|
||||||
import org.hibernate.cache.spi.access.NaturalIdDataAccess;
|
import org.hibernate.cache.spi.access.NaturalIdDataAccess;
|
||||||
import org.hibernate.dialect.Dialect;
|
import org.hibernate.dialect.Dialect;
|
||||||
import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;
|
|
||||||
import org.hibernate.engine.spi.ExecuteUpdateResultCheckStyle;
|
import org.hibernate.engine.spi.ExecuteUpdateResultCheckStyle;
|
||||||
import org.hibernate.engine.spi.SessionFactoryImplementor;
|
import org.hibernate.engine.spi.SessionFactoryImplementor;
|
||||||
import org.hibernate.internal.DynamicFilterAliasGenerator;
|
import org.hibernate.internal.DynamicFilterAliasGenerator;
|
||||||
|
@ -592,19 +591,6 @@ public class SingleTableEntityPersister extends AbstractEntityPersister {
|
||||||
return discriminatorFilterFragment( alias, null );
|
return discriminatorFilterFragment( alias, null );
|
||||||
}
|
}
|
||||||
|
|
||||||
public String oneToManyFilterFragment(String alias) throws MappingException {
|
|
||||||
return forceDiscriminator
|
|
||||||
? discriminatorFilterFragment( alias, null )
|
|
||||||
: "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String oneToManyFilterFragment(String alias, Set<String> treatAsDeclarations) {
|
|
||||||
return needsDiscriminator()
|
|
||||||
? discriminatorFilterFragment( alias, treatAsDeclarations )
|
|
||||||
: "";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String filterFragment(String alias, Set<String> treatAsDeclarations) {
|
protected String filterFragment(String alias, Set<String> treatAsDeclarations) {
|
||||||
if ( hasWhere() ) {
|
if ( hasWhere() ) {
|
||||||
|
|
|
@ -14,7 +14,6 @@ import java.sql.SQLException;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import org.hibernate.EntityNameResolver;
|
import org.hibernate.EntityNameResolver;
|
||||||
import org.hibernate.FetchMode;
|
import org.hibernate.FetchMode;
|
||||||
|
@ -454,20 +453,6 @@ public class AnyType extends AbstractType implements CompositeType, AssociationT
|
||||||
throw new UnsupportedOperationException("any types do not have a unique referenced persister");
|
throw new UnsupportedOperationException("any types do not have a unique referenced persister");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getOnCondition(String alias, SessionFactoryImplementor factory, Map enabledFilters) {
|
|
||||||
throw new UnsupportedOperationException();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getOnCondition(
|
|
||||||
String alias,
|
|
||||||
SessionFactoryImplementor factory,
|
|
||||||
Map enabledFilters,
|
|
||||||
Set<String> treatAsDeclarations) {
|
|
||||||
throw new UnsupportedOperationException();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used to externalize discrimination per a given identifier. For example, when writing to
|
* Used to externalize discrimination per a given identifier. For example, when writing to
|
||||||
* second level cache we write the discrimination resolved concrete type for each entity written.
|
* second level cache we write the discrimination resolved concrete type for each entity written.
|
||||||
|
|
|
@ -57,19 +57,6 @@ public interface AssociationType extends Type {
|
||||||
*/
|
*/
|
||||||
String getAssociatedEntityName(SessionFactoryImplementor factory) throws MappingException;
|
String getAssociatedEntityName(SessionFactoryImplementor factory) throws MappingException;
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the "filtering" SQL fragment that is applied in the
|
|
||||||
* SQL on clause, in addition to the usual join condition
|
|
||||||
*/
|
|
||||||
String getOnCondition(String alias, SessionFactoryImplementor factory, Map enabledFilters)
|
|
||||||
throws MappingException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the "filtering" SQL fragment that is applied in the
|
|
||||||
* SQL on clause, in addition to the usual join condition
|
|
||||||
*/
|
|
||||||
String getOnCondition(String alias, SessionFactoryImplementor factory, Map enabledFilters, Set<String> treatAsDeclarations);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Do we dirty check this association, even when there are
|
* Do we dirty check this association, even when there are
|
||||||
* no columns to be updated?
|
* no columns to be updated?
|
||||||
|
|
|
@ -15,7 +15,6 @@ import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
|
||||||
import java.util.SortedMap;
|
import java.util.SortedMap;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
|
|
||||||
|
@ -744,21 +743,6 @@ public abstract class CollectionType extends AbstractType implements Association
|
||||||
return getClass().getName() + '(' + getRole() + ')';
|
return getClass().getName() + '(' + getRole() + ')';
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getOnCondition(String alias, SessionFactoryImplementor factory, Map enabledFilters)
|
|
||||||
throws MappingException {
|
|
||||||
return getAssociatedJoinable( factory ).filterFragment( alias, enabledFilters );
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getOnCondition(
|
|
||||||
String alias,
|
|
||||||
SessionFactoryImplementor factory,
|
|
||||||
Map enabledFilters,
|
|
||||||
Set<String> treatAsDeclarations) {
|
|
||||||
return getAssociatedJoinable( factory ).filterFragment( alias, enabledFilters, treatAsDeclarations );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* instantiate a collection wrapper (called when loading an object)
|
* instantiate a collection wrapper (called when loading an object)
|
||||||
*
|
*
|
||||||
|
|
|
@ -9,7 +9,6 @@ package org.hibernate.type;
|
||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import org.hibernate.AssertionFailure;
|
import org.hibernate.AssertionFailure;
|
||||||
import org.hibernate.HibernateException;
|
import org.hibernate.HibernateException;
|
||||||
|
@ -380,25 +379,6 @@ public abstract class EntityType extends AbstractType implements AssociationType
|
||||||
.isEqual( xid, yid, factory );
|
.isEqual( xid, yid, factory );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getOnCondition(String alias, SessionFactoryImplementor factory, Map enabledFilters) {
|
|
||||||
return getOnCondition( alias, factory, enabledFilters, null );
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getOnCondition(
|
|
||||||
String alias,
|
|
||||||
SessionFactoryImplementor factory,
|
|
||||||
Map enabledFilters,
|
|
||||||
Set<String> treatAsDeclarations) {
|
|
||||||
if ( isReferenceToPrimaryKey() && ( treatAsDeclarations == null || treatAsDeclarations.isEmpty() ) ) {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return getAssociatedJoinable( factory ).filterFragment( alias, enabledFilters, treatAsDeclarations );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Resolve an identifier or unique key value
|
* Resolve an identifier or unique key value
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue