sql >> Databasteknik >  >> RDS >> PostgreSQL

HQL - Kontrollera om en Array innehåller ett värde

För att kartlägga arrayerna behöver du en anpassad typ. Du kan använda hibernate-types-projektet för detta:https://vladmihalcea.com/how-to-map-java-and-sql-arrays-with-jpa-and-hibernate/

Försökte du använda e2.col3 = FUNCTION('ANY', e1.col3Arr) än? Om det inte fungerar skulle jag föreslå att du skapar en anpassad SQLFunction som återger den SQL du önskar t.ex.

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 måste registrera funktionen i Dialekten.



  1. Det nya Mysqli-objektet är Null

  2. Installera Oracle Forms and Reports 11g version 2

  3. MYSQL kumulativ summa efter datum

  4. Flytta data från SQL Server till Oracle upprepade gånger