보기에서 자동으로 DAO를 생성하려고합니다. 구성 미리 설정을 완료했습니다.JOOQ가보기 용 DAO를 생성합니다.
<generate>
<!--<deprecated>false</deprecated>-->
<daos>true</daos>
</generate>
테이블에는 DAO가 생성되지만보기에는 생성되지 않습니다. 문서에 따르면 :
jOOQ의 코드 생성기를 사용하는 경우 POJO 및 DAO를 생성하도록 구성 할 수 있습니다. 그런 다음 jOOQ는 UpdatableRecord 당 하나의 DAO를 생성합니다. 즉, 단일 열 기본 키가있는 테이블 당 하나의 DAO를 생성합니다.
및
공용 인터페이스
UpdatableRecord<R extends UpdatableRecord<R>>
는TableRecord<R>
다시 데이터베이스에 저장 될 수있는 레코드에 대한 공통 인터페이스를 확장합니다.가 테이블 또는 뷰에서 레코드 나타내는 경우 모든 기록은 갱신 할 수 있습니다 - TableRecord의 기본 테이블 또는 뷰를 기본 키 또는 적어도 하나의 고유 키 "즉"주 고유 키 "를 가지고 테이블 및 뷰 모두
가
마녀 기본적 DAO의이 갱신 기록 용으로 생성되는 것을 의미하며, 갱신 레코드 수 : 에 jOOQ 의해 사용되는 주요 고유 키 "는 UpdatableRecord에서 수행 할 수있는 다양한 동작을 수행한다. 그러나 내보기에는 UpdatableRecord 및 Keys가 생성되지 않습니다. 이 점을 모두 달성 할 수 있습니까? 아니면 의미가 없습니까?
여기 내보기 중 하나
CREATE OR REPLACE VIEW test AS
SELECT test_table.id, test_table.test_id, test_table.foo
FROM private.test_table;
ALTER TABLE test
OWNER TO postgres;
GRANT ALL ON TABLE test TO postgres;
GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE test TO viewers;
CREATE OR REPLACE RULE "TEST_INSERT" AS
ON INSERT TO test DO INSTEAD INSERT INTO private.test_table (test_id, foo)
VALUES (new.test_id, new.foo);
CREATE OR REPLACE RULE "TEST_UPDATE" AS
ON UPDATE TO test DO INSTEAD UPDATE private.test_table SET test_id = new.test_id, foo = new.foo
WHERE test_table.id = old.id;
P.S.입니다 더 키가 키 클래스에서 생성되지 않기 때문에
나는 그것이 "주요 고유 키"문서에 언급 된 함께 할 수있는 뭔가가 그 것을 내 자신의 의심을 가지고있다. <plugin>
<groupId>org.jooq</groupId>
<artifactId>jooq-codegen-maven</artifactId>
<version>3.4.2</version>
<dependencies>
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.1-901-1.jdbc4</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>regenerate-jooq-sources</id>
<phase>clean</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<!-- JDBC connection parameters -->
<jdbc>
<driver>org.postgresql.Driver</driver>
<url>
jdbc:postgresql://localhost:5432/core
</url>
<user>client</user>
<password>***</password>
</jdbc>
<!-- Generator parameters -->
<generator>
<name>org.jooq.util.DefaultGenerator</name>
<database>
<syntheticPrimaryKeys>SCHEMA\.TABLE\.COLUMN(1|2)</syntheticPrimaryKeys>
<overridePrimaryKeys>overrid_primmary_key</overridePrimaryKeys>
<name>
org.jooq.util.postgres.PostgresDatabase
</name>
<includes>.*</includes>
<excludes></excludes>
<inputSchema>public</inputSchema>
</database>
<generate>
<!--<deprecated>false</deprecated>-->
<daos>true</daos>
<interfaces>true</interfaces>
</generate>
<target>
<packageName>
com.rfid.server.jooq
</packageName>
<directory>
${basedir}/src/main/java/
</directory>
</target>
</generator>
</configuration>
</execution>
</executions>
</plugin>
그런 식으로, 당신은 정말로 SCHEMA \ .TABLE \ .COLUMN (1 | 2) syntheticPrimaryKeys>를 보관하지 않았습니까? 실제 열 이름과 일치하는 정규 표현식을 지정해야합니다 ... –