I have this table.
CREATE TABLE directory (
id INT NOT NULL,
parent_id INT,
label character varying(255),
CONSTRAINT pk_directory PRIMARY KEY (id),
CONSTRAINT fk_directory FOREIGN KEY (parent_id) REFERENCES t_directory (id)
);
I'm trying to build a hierarchy so I have done this in jOOQ.
CommonTableExpression<?> cte = name("t").fields(
"id",
"name",
"path"
).as(
select(
DIRECTORY.ID,
DIRECTORY.LABEL,
DIRECTORY.LABEL)
.from(DIRECTORY)
.where(DIRECTORY.PARENT_ID.isNull())
.unionAll(
select(
DIRECTORY.ID,
DIRECTORY.LABEL,
field(name("t", "path"), VARCHAR)
.concat("\\")
.concat(DIRECTORY.LABEL))
.from(table(name("t")))
.join(DIRECTORY)
.on(field(name("t", "id"), INTEGER)
.eq(DIRECTORY.PARENT_ID)))
);
System.out.println(
create().withRecursive(cte)
.selectFrom(cte)
.fetch()
);
But I get this error:
ERROR: recursive query "t" column 3 has type character varying(255) in non-recursive term but type character varying overall
If I change the cast from VARCHAR to TEXT it works but PostgresDataType.TEXT is deprecated and shouldn't be used.
Anyone knows the solution?
Thanks