sql >> Databáze >  >> RDS >> PostgreSQL

Použití UUID s EclipseLink a PostgreSQL

Měl jsem stejný problém s EclipseLink JPA + Postgresql + UUID jako primárním klíčem.

Abych to vyřešil, sloučil jsem kódy z Github a níže odkaz:https://forums.oracle.com/forums/thread.jspa?messageID=4584157

Níže uvedený kód pro UUIDConverter pro mě fungoval, i když kód určitě není nejlepší.

public void initialize(DatabaseMapping ARGMapping, Session ARGSession)
{
    final DatabaseField Field;
    if (ARGMapping instanceof DirectCollectionMapping)
    {
        Field = ((DirectCollectionMapping) ARGMapping).getDirectField();
    }
    else
    {
        Field = ARGMapping.getField();
    }
    Field.setSqlType(Types.OTHER);
    Field.setTypeName("uuid");
    Field.setColumnDefinition("UUID");

    for (DatabaseMapping m : ARGMapping.getDescriptor().getMappings())
    {
        assert OneToOneMapping.class.isAssignableFrom(ManyToOneMapping.class);
        if (m instanceof OneToOneMapping)
        {
            for (DatabaseField field : ((OneToOneMapping) m).getForeignKeyFields())
            {
                field.setSqlType(Types.OTHER);
                field.setColumnDefinition("UUID");
                field.setTypeName("uuid");
            }
        }
    }
}


  1. Předávání parametrů do JDBC PreparedStatement

  2. Jak odkazovat na ID rodiče v ID dítěte pomocí JPA/Hibernate?

  3. vyberte z jedné tabulky, počítejte z jiné, kde je id propojeno

  4. MariaDB přichází do města ve vašem okolí!