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:
- Using the generated meta data
- Using runtime meta data
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.