sql >> Database teknologi >  >> RDS >> PostgreSQL

HQL - Tjek om et array indeholder en værdi

For at kortlægge arrays skal du bruge en brugerdefineret type. Du kan bruge hibernate-types-projektet til dette:https://vladmihalcea.com/how-to-map-java-and-sql-arrays-with-jpa-and-hibernate/

Forsøgte du at bruge e2.col3 = FUNCTION('ANY', e1.col3Arr) endnu? Hvis det ikke virker, vil jeg foreslå, at du opretter en brugerdefineret SQLFunction der gengiver den SQL, du ønsker, f.eks.

public class ArrayAny implements SQLFunction {

    @Override
    public boolean hasArguments() {
        return true;
    }

    @Override
    public boolean hasParenthesesIfNoArguments() {
        return true;
    }

    @Override
    public Type getReturnType(Type firstArgumentType, Mapping mapping) throws QueryException {
        return firstArgumentType;
    }

    @Override
    public String render(Type firstArgumentType, List args, SessionFactoryImplementor factory) throws QueryException {
        return "any(" + args.get(0) + ")";
    }
}

Du skal registrere funktionen i Dialekten.



  1. LISTAGG-forespørgsel ORA-00937:ikke en enkeltgruppegruppefunktion

  2. hvordan man viser talværdi i ord

  3. Oracle-ekstrakt fra xml-afkortningsværdi

  4. hvordan omdøber man et skema i MySQL