Site icon Java, SQL and jOOQ.

jOOQ Tip of the Day: Discover all Primary Keys

We’ve recently encountered this interesting use-case on the jOOQ user group. How do you discover all primary keys of your schema via the jOOQ API? There are two ways: Let’s see how it works:

Using the generated meta data

This is straightforward. If you’re using Java 8, you can run the following program

GENERATED_SCHEMA
    .getTables()
    .stream()
    .map(t -> t.getPrimaryKey())
    .filter(Objects::nonNull)
    .forEach(System.out::println);

Whereas with Java 7 or less, you’d write

for (Table<?> t : GENERATED_SCHEMA.getTables()) {
    UniqueKey<?> key = t.getPrimaryKey();

    if (key != null)
        System.out.println(key);
}

Using runtime meta data

If you’re not using the code generator, the same can be achieved with:

DSL.using(configuration)
   .meta()
   .getTables()
   .[ same as above ]

That’s it! Another interesting use case of querying the meta information via the jOOQ API can be seen here.
Exit mobile version