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.