sql >> Database >  >> RDS >> PostgreSQL

HQL - Controleer of een array een waarde bevat

Voor het in kaart brengen van de arrays heeft u een aangepast type nodig. U kunt hiervoor het hibernate-types-project gebruiken:https://vladmihalcea.com/how-to-map-java-and-sql-arrays-with-jpa-and-hibernate/

Heb je geprobeerd om e2.col3 = FUNCTION('ANY', e1.col3Arr) te gebruiken nog? Als dat niet werkt, raad ik u aan een aangepaste SQLFunction te maken die de gewenste SQL weergeeft, bijvoorbeeld

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) + ")";
    }
}

U moet de functie binnen het Dialect registreren.



  1. Symfony2:Lijst met steden per land

  2. SQL-instructie uitvoeren via JDBC met CLOB-binding

  3. MariaDB-waarschuwing:'[email protected]' heeft beide ... Het wachtwoord wordt genegeerd

  4. De nieuwe primaire sleutel-ID van het record ophalen uit de MySQL-query voor invoegen?