Merge pull request #2804 from aahlenst/jooq-starter
* pr/2804: Document jOOQ support Add jOOQ sample application Add support for jOOQpull/3128/merge
commit
d9466cfcf5
@ -0,0 +1,137 @@
|
||||
/*
|
||||
* Copyright 2012-2015 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.autoconfigure.jooq;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
|
||||
import org.jooq.ConnectionProvider;
|
||||
import org.jooq.DSLContext;
|
||||
import org.jooq.ExecuteListenerProvider;
|
||||
import org.jooq.RecordListenerProvider;
|
||||
import org.jooq.RecordMapperProvider;
|
||||
import org.jooq.SQLDialect;
|
||||
import org.jooq.TransactionProvider;
|
||||
import org.jooq.VisitListenerProvider;
|
||||
import org.jooq.conf.Settings;
|
||||
import org.jooq.impl.DataSourceConnectionProvider;
|
||||
import org.jooq.impl.DefaultConfiguration;
|
||||
import org.jooq.impl.DefaultDSLContext;
|
||||
import org.jooq.impl.DefaultExecuteListenerProvider;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
|
||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
* {@link EnableAutoConfiguration Auto-configuration} for JOOQ.
|
||||
*
|
||||
* @author Andreas Ahlenstorf
|
||||
* @since 1.3.0
|
||||
*/
|
||||
@Configuration
|
||||
@ConditionalOnClass(DSLContext.class)
|
||||
@ConditionalOnBean(DataSource.class)
|
||||
@AutoConfigureAfter(DataSourceAutoConfiguration.class)
|
||||
public class JooqAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean(DataSourceConnectionProvider.class)
|
||||
public DataSourceConnectionProvider dataSourceConnectionProvider(DataSource dataSource) {
|
||||
return new DataSourceConnectionProvider(new TransactionAwareDataSourceProxy(
|
||||
dataSource));
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnBean(PlatformTransactionManager.class)
|
||||
public TransactionProvider transactionProvider(PlatformTransactionManager txManager) {
|
||||
return new SpringTransactionProvider(txManager);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ExecuteListenerProvider jooqExceptionTranslatorExecuteListenerProvider() {
|
||||
return new DefaultExecuteListenerProvider(new JooqExceptionTranslator());
|
||||
}
|
||||
|
||||
@Configuration
|
||||
@ConditionalOnMissingBean(DSLContext.class)
|
||||
@EnableConfigurationProperties(JooqProperties.class)
|
||||
public static class DslContextConfiguration {
|
||||
|
||||
@Autowired
|
||||
private JooqProperties properties = new JooqProperties();
|
||||
|
||||
@Autowired
|
||||
private ConnectionProvider connectionProvider;
|
||||
|
||||
@Autowired(required = false)
|
||||
private TransactionProvider transactionProvider;
|
||||
|
||||
@Autowired(required = false)
|
||||
private RecordMapperProvider recordMapperProvider;
|
||||
|
||||
@Autowired(required = false)
|
||||
private Settings settings;
|
||||
|
||||
@Autowired(required = false)
|
||||
private RecordListenerProvider[] recordListenerProviders;
|
||||
|
||||
@Autowired
|
||||
private ExecuteListenerProvider[] executeListenerProviders;
|
||||
|
||||
@Autowired(required = false)
|
||||
private VisitListenerProvider[] visitListenerProviders;
|
||||
|
||||
@Bean
|
||||
public DefaultDSLContext dslContext(org.jooq.Configuration configuration) {
|
||||
return new DefaultDSLContext(configuration);
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean(org.jooq.Configuration.class)
|
||||
public DefaultConfiguration jooqConfiguration() {
|
||||
DefaultConfiguration configuration = new DefaultConfiguration();
|
||||
if (!StringUtils.isEmpty(this.properties.getSqlDialect())) {
|
||||
configuration.set(SQLDialect.valueOf(this.properties.getSqlDialect()));
|
||||
}
|
||||
configuration.set(this.connectionProvider);
|
||||
if (this.transactionProvider != null) {
|
||||
configuration.set(this.transactionProvider);
|
||||
}
|
||||
if (this.recordMapperProvider != null) {
|
||||
configuration.set(this.recordMapperProvider);
|
||||
}
|
||||
if (this.settings != null) {
|
||||
configuration.set(this.settings);
|
||||
}
|
||||
configuration.set(this.recordListenerProviders);
|
||||
configuration.set(this.executeListenerProviders);
|
||||
configuration.set(this.visitListenerProviders);
|
||||
return configuration;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,90 @@
|
||||
/*
|
||||
* Copyright 2012-2015 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.autoconfigure.jooq;
|
||||
|
||||
import java.sql.SQLException;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.jooq.ExecuteContext;
|
||||
import org.jooq.SQLDialect;
|
||||
import org.jooq.impl.DefaultExecuteListener;
|
||||
import org.springframework.dao.DataAccessException;
|
||||
import org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator;
|
||||
import org.springframework.jdbc.support.SQLExceptionTranslator;
|
||||
import org.springframework.jdbc.support.SQLStateSQLExceptionTranslator;
|
||||
|
||||
/**
|
||||
* Transforms {@link java.sql.SQLException} into a Spring-specific @{link
|
||||
* DataAccessException}.
|
||||
*
|
||||
* @author Lukas Eder
|
||||
* @author Andreas Ahlenstorf
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
class JooqExceptionTranslator extends DefaultExecuteListener {
|
||||
|
||||
// Based on the jOOQ-spring-example from https://github.com/jOOQ/jOOQ
|
||||
|
||||
private static final Log logger = LogFactory.getLog(JooqExceptionTranslator.class);
|
||||
|
||||
@Override
|
||||
public void exception(ExecuteContext context) {
|
||||
SQLExceptionTranslator translator = getTranslator(context);
|
||||
// The exception() callback is not only triggered for SQL exceptions but also for
|
||||
// "normal" exceptions. In those cases sqlException() returns null.
|
||||
SQLException exception = context.sqlException();
|
||||
while (exception != null) {
|
||||
handle(context, translator, exception);
|
||||
exception = exception.getNextException();
|
||||
}
|
||||
}
|
||||
|
||||
private SQLExceptionTranslator getTranslator(ExecuteContext context) {
|
||||
SQLDialect dialect = context.configuration().dialect();
|
||||
if (dialect != null) {
|
||||
return new SQLErrorCodeSQLExceptionTranslator(dialect.name());
|
||||
}
|
||||
return new SQLStateSQLExceptionTranslator();
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle a single exception in the chain. SQLExceptions might be nested multiple
|
||||
* levels deep. The outermost exception is usually the least interesting one
|
||||
* ("Call getNextException to see the cause."). Therefore the innermost exception is
|
||||
* propagated and all other exceptions are logged.
|
||||
* @param context the execute context
|
||||
* @param translator the exception translator
|
||||
* @param exception the exception
|
||||
*/
|
||||
private void handle(ExecuteContext context, SQLExceptionTranslator translator,
|
||||
SQLException exception) {
|
||||
DataAccessException translated = translate(context, translator, exception);
|
||||
if (exception.getNextException() == null) {
|
||||
context.exception(translated);
|
||||
}
|
||||
else {
|
||||
logger.error("Execution of SQL statement failed.", translated);
|
||||
}
|
||||
}
|
||||
|
||||
private DataAccessException translate(ExecuteContext context,
|
||||
SQLExceptionTranslator translator, SQLException exception) {
|
||||
return translator.translate("jOOQ", context.sql(), exception);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,44 @@
|
||||
/*
|
||||
* Copyright 2012-2015 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.autoconfigure.jooq;
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
/**
|
||||
* Configuration properties for the JOOQ database library.
|
||||
*
|
||||
* @author Andreas Ahlenstorf
|
||||
* @since 1.3.0
|
||||
*/
|
||||
@ConfigurationProperties(prefix = "spring.jooq")
|
||||
public class JooqProperties {
|
||||
|
||||
/**
|
||||
* SQLDialect JOOQ used when communicating with the configured datasource, e.g.
|
||||
* "POSTGRES".
|
||||
*/
|
||||
private String sqlDialect;
|
||||
|
||||
public String getSqlDialect() {
|
||||
return this.sqlDialect;
|
||||
}
|
||||
|
||||
public void setSqlDialect(String sqlDialect) {
|
||||
this.sqlDialect = sqlDialect;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,43 @@
|
||||
/*
|
||||
* Copyright 2012-2015 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.autoconfigure.jooq;
|
||||
|
||||
import org.jooq.Transaction;
|
||||
import org.springframework.transaction.TransactionStatus;
|
||||
|
||||
/**
|
||||
* Adapts a Spring transaction for JOOQ.
|
||||
*
|
||||
* @author Lukas Eder
|
||||
* @author Andreas Ahlenstorf
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
class SpringTransaction implements Transaction {
|
||||
|
||||
// Based on the jOOQ-spring-example from https://github.com/jOOQ/jOOQ
|
||||
|
||||
private final TransactionStatus transactionStatus;
|
||||
|
||||
public SpringTransaction(TransactionStatus transactionStatus) {
|
||||
this.transactionStatus = transactionStatus;
|
||||
}
|
||||
|
||||
public TransactionStatus getTxStatus() {
|
||||
return this.transactionStatus;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,66 @@
|
||||
/*
|
||||
* Copyright 2012-2015 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.autoconfigure.jooq;
|
||||
|
||||
import org.jooq.TransactionContext;
|
||||
import org.jooq.TransactionProvider;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
import org.springframework.transaction.TransactionDefinition;
|
||||
import org.springframework.transaction.TransactionStatus;
|
||||
import org.springframework.transaction.support.DefaultTransactionDefinition;
|
||||
|
||||
/**
|
||||
* Allows Spring Transaction to be used with JOOQ.
|
||||
*
|
||||
* @author Lukas Eder
|
||||
* @author Andreas Ahlenstorf
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
class SpringTransactionProvider implements TransactionProvider {
|
||||
|
||||
// Based on the jOOQ-spring-example from https://github.com/jOOQ/jOOQ
|
||||
|
||||
private final PlatformTransactionManager transactionManager;
|
||||
|
||||
SpringTransactionProvider(PlatformTransactionManager transactionManager) {
|
||||
this.transactionManager = transactionManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void begin(TransactionContext context) {
|
||||
TransactionDefinition definition = new DefaultTransactionDefinition(
|
||||
TransactionDefinition.PROPAGATION_NESTED);
|
||||
TransactionStatus status = this.transactionManager.getTransaction(definition);
|
||||
context.transaction(new SpringTransaction(status));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void commit(TransactionContext ctx) {
|
||||
this.transactionManager.commit(getTransactionStatus(ctx));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void rollback(TransactionContext ctx) {
|
||||
this.transactionManager.rollback(getTransactionStatus(ctx));
|
||||
}
|
||||
|
||||
private TransactionStatus getTransactionStatus(TransactionContext ctx) {
|
||||
SpringTransaction transaction = (SpringTransaction) ctx.transaction();
|
||||
return transaction.getTxStatus();
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
/*
|
||||
* Copyright 2012-2015 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Auto-configuration for JOOQ.
|
||||
*/
|
||||
package org.springframework.boot.autoconfigure.jooq;
|
@ -0,0 +1,266 @@
|
||||
/*
|
||||
* Copyright 2012-2015 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.autoconfigure.jooq;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
|
||||
import org.hamcrest.Matcher;
|
||||
import org.jooq.DSLContext;
|
||||
import org.jooq.ExecuteListener;
|
||||
import org.jooq.ExecuteListenerProvider;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.RecordListener;
|
||||
import org.jooq.RecordListenerProvider;
|
||||
import org.jooq.RecordMapper;
|
||||
import org.jooq.RecordMapperProvider;
|
||||
import org.jooq.RecordType;
|
||||
import org.jooq.SQLDialect;
|
||||
import org.jooq.TransactionalRunnable;
|
||||
import org.jooq.VisitListener;
|
||||
import org.jooq.VisitListenerProvider;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.ExpectedException;
|
||||
import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
|
||||
import org.springframework.boot.test.EnvironmentTestUtils;
|
||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.dao.DataIntegrityViolationException;
|
||||
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
|
||||
import static org.hamcrest.Matchers.equalTo;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertThat;
|
||||
import static org.junit.Assert.fail;
|
||||
|
||||
/**
|
||||
* Tests for {@link JooqAutoConfiguration}.
|
||||
*
|
||||
* @author Andreas Ahlenstorf
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
public class JooqAutoConfigurationTests {
|
||||
|
||||
private static final String[] NO_BEANS = {};
|
||||
|
||||
@Rule
|
||||
public ExpectedException thrown = ExpectedException.none();
|
||||
|
||||
private AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
|
||||
|
||||
@Before
|
||||
public void init() {
|
||||
EnvironmentTestUtils.addEnvironment(this.context,
|
||||
"spring.datasource.name:jooqtest");
|
||||
EnvironmentTestUtils.addEnvironment(this.context, "spring.jooq.sql-dialect:H2");
|
||||
}
|
||||
|
||||
@After
|
||||
public void close() {
|
||||
if (this.context != null) {
|
||||
this.context.close();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void noDataSource() throws Exception {
|
||||
registerAndRefresh(JooqAutoConfiguration.class,
|
||||
PropertyPlaceholderAutoConfiguration.class);
|
||||
assertEquals(0, this.context.getBeanNamesForType(DSLContext.class).length);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void jooqWithoutTx() throws Exception {
|
||||
registerAndRefresh(JooqDataSourceConfiguration.class,
|
||||
JooqAutoConfiguration.class, PropertyPlaceholderAutoConfiguration.class);
|
||||
assertThat(getBeanNames(PlatformTransactionManager.class), equalTo(NO_BEANS));
|
||||
assertThat(getBeanNames(SpringTransactionProvider.class), equalTo(NO_BEANS));
|
||||
DSLContext dsl = this.context.getBean(DSLContext.class);
|
||||
dsl.execute("create table jooqtest (name varchar(255) primary key);");
|
||||
dsl.transaction(new AssertFetch(dsl, "select count(*) as total from jooqtest;",
|
||||
equalTo("0")));
|
||||
dsl.transaction(new ExecuteSql(dsl, "insert into jooqtest (name) values ('foo');"));
|
||||
dsl.transaction(new AssertFetch(dsl, "select count(*) as total from jooqtest;",
|
||||
equalTo("1")));
|
||||
try {
|
||||
dsl.transaction(new ExecuteSql(dsl,
|
||||
"insert into jooqtest (name) values ('bar');",
|
||||
"insert into jooqtest (name) values ('foo');"));
|
||||
fail("An DataIntegrityViolationException should have been thrown.");
|
||||
}
|
||||
catch (DataIntegrityViolationException ex) {
|
||||
}
|
||||
dsl.transaction(new AssertFetch(dsl, "select count(*) as total from jooqtest;",
|
||||
equalTo("2")));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void jooqWithTx() throws Exception {
|
||||
registerAndRefresh(JooqDataSourceConfiguration.class,
|
||||
PropertyPlaceholderAutoConfiguration.class, TxManagerConfiguration.class,
|
||||
JooqAutoConfiguration.class);
|
||||
this.context.getBean(PlatformTransactionManager.class);
|
||||
DSLContext dsl = this.context.getBean(DSLContext.class);
|
||||
assertEquals(SQLDialect.H2, dsl.configuration().dialect());
|
||||
dsl.execute("create table jooqtest_tx (name varchar(255) primary key);");
|
||||
dsl.transaction(new AssertFetch(dsl,
|
||||
"select count(*) as total from jooqtest_tx;", equalTo("0")));
|
||||
dsl.transaction(new ExecuteSql(dsl,
|
||||
"insert into jooqtest_tx (name) values ('foo');"));
|
||||
dsl.transaction(new AssertFetch(dsl,
|
||||
"select count(*) as total from jooqtest_tx;", equalTo("1")));
|
||||
try {
|
||||
dsl.transaction(new ExecuteSql(dsl,
|
||||
"insert into jooqtest (name) values ('bar');",
|
||||
"insert into jooqtest (name) values ('foo');"));
|
||||
fail("A DataIntegrityViolationException should have been thrown.");
|
||||
}
|
||||
catch (DataIntegrityViolationException ex) {
|
||||
}
|
||||
dsl.transaction(new AssertFetch(dsl,
|
||||
"select count(*) as total from jooqtest_tx;", equalTo("1")));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void customProvidersArePickedUp() {
|
||||
registerAndRefresh(JooqDataSourceConfiguration.class,
|
||||
PropertyPlaceholderAutoConfiguration.class, TxManagerConfiguration.class,
|
||||
TestRecordMapperProvider.class, TestRecordListenerProvider.class,
|
||||
TestExecuteListenerProvider.class, TestVisitListenerProvider.class,
|
||||
JooqAutoConfiguration.class);
|
||||
DSLContext dsl = this.context.getBean(DSLContext.class);
|
||||
assertEquals(TestRecordMapperProvider.class, dsl.configuration()
|
||||
.recordMapperProvider().getClass());
|
||||
assertThat(dsl.configuration().recordListenerProviders().length, equalTo(1));
|
||||
assertThat(dsl.configuration().executeListenerProviders().length, equalTo(2));
|
||||
assertThat(dsl.configuration().visitListenerProviders().length, equalTo(1));
|
||||
}
|
||||
|
||||
private void registerAndRefresh(Class<?>... annotatedClasses) {
|
||||
this.context.register(annotatedClasses);
|
||||
this.context.refresh();
|
||||
}
|
||||
|
||||
private String[] getBeanNames(Class<?> type) {
|
||||
return this.context.getBeanNamesForType(type);
|
||||
}
|
||||
|
||||
private static class AssertFetch implements TransactionalRunnable {
|
||||
|
||||
private final DSLContext dsl;
|
||||
|
||||
private final String sql;
|
||||
|
||||
private final Matcher<? super String> matcher;
|
||||
|
||||
public AssertFetch(DSLContext dsl, String sql, Matcher<? super String> matcher) {
|
||||
this.dsl = dsl;
|
||||
this.sql = sql;
|
||||
this.matcher = matcher;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(org.jooq.Configuration configuration) throws Exception {
|
||||
assertThat(this.dsl.fetch(this.sql).getValue(0, 0).toString(), this.matcher);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static class ExecuteSql implements TransactionalRunnable {
|
||||
|
||||
private final DSLContext dsl;
|
||||
|
||||
private final String[] sql;
|
||||
|
||||
public ExecuteSql(DSLContext dsl, String... sql) {
|
||||
this.dsl = dsl;
|
||||
this.sql = sql;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(org.jooq.Configuration configuration) throws Exception {
|
||||
for (String statement : this.sql) {
|
||||
this.dsl.execute(statement);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Configuration
|
||||
protected static class JooqDataSourceConfiguration {
|
||||
|
||||
@Bean
|
||||
public DataSource jooqDataSource() {
|
||||
return DataSourceBuilder.create().url("jdbc:hsqldb:mem:jooqtest")
|
||||
.username("sa").build();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Configuration
|
||||
protected static class TxManagerConfiguration {
|
||||
|
||||
@Bean
|
||||
public PlatformTransactionManager transactionManager(DataSource dataSource) {
|
||||
return new DataSourceTransactionManager(dataSource);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected static class TestRecordMapperProvider implements RecordMapperProvider {
|
||||
|
||||
@Override
|
||||
public <R extends Record, E> RecordMapper<R, E> provide(RecordType<R> recordType,
|
||||
Class<? extends E> aClass) {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected static class TestRecordListenerProvider implements RecordListenerProvider {
|
||||
|
||||
@Override
|
||||
public RecordListener provide() {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected static class TestExecuteListenerProvider implements ExecuteListenerProvider {
|
||||
|
||||
@Override
|
||||
public ExecuteListener provide() {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected static class TestVisitListenerProvider implements VisitListenerProvider {
|
||||
|
||||
@Override
|
||||
public VisitListener provide() {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
== jOOQ Sample
|
||||
|
||||
To rerun the code generator:
|
||||
|
||||
[indent=0]
|
||||
----
|
||||
$ rm -fr gensrc
|
||||
$ mvn clean generate-sources -Pgenerate
|
||||
----
|
@ -0,0 +1,81 @@
|
||||
/**
|
||||
* This class is generated by jOOQ
|
||||
*/
|
||||
package sample.jooq.domain;
|
||||
|
||||
|
||||
import javax.annotation.Generated;
|
||||
|
||||
import org.jooq.ForeignKey;
|
||||
import org.jooq.UniqueKey;
|
||||
import org.jooq.impl.AbstractKeys;
|
||||
|
||||
import sample.jooq.domain.tables.Author;
|
||||
import sample.jooq.domain.tables.Book;
|
||||
import sample.jooq.domain.tables.BookStore;
|
||||
import sample.jooq.domain.tables.BookToBookStore;
|
||||
import sample.jooq.domain.tables.Language;
|
||||
import sample.jooq.domain.tables.records.AuthorRecord;
|
||||
import sample.jooq.domain.tables.records.BookRecord;
|
||||
import sample.jooq.domain.tables.records.BookStoreRecord;
|
||||
import sample.jooq.domain.tables.records.BookToBookStoreRecord;
|
||||
import sample.jooq.domain.tables.records.LanguageRecord;
|
||||
|
||||
|
||||
/**
|
||||
* A class modelling foreign key relationships between tables of the <code>PUBLIC</code>
|
||||
* schema
|
||||
*/
|
||||
@Generated(
|
||||
value = {
|
||||
"http://www.jooq.org",
|
||||
"jOOQ version:3.6.2"
|
||||
},
|
||||
comments = "This class is generated by jOOQ"
|
||||
)
|
||||
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
|
||||
public class Keys {
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// IDENTITY definitions
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// UNIQUE and PRIMARY KEY definitions
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
public static final UniqueKey<LanguageRecord> CONSTRAINT_C = UniqueKeys0.CONSTRAINT_C;
|
||||
public static final UniqueKey<AuthorRecord> CONSTRAINT_7 = UniqueKeys0.CONSTRAINT_7;
|
||||
public static final UniqueKey<BookRecord> CONSTRAINT_1 = UniqueKeys0.CONSTRAINT_1;
|
||||
public static final UniqueKey<BookStoreRecord> CONSTRAINT_F = UniqueKeys0.CONSTRAINT_F;
|
||||
public static final UniqueKey<BookToBookStoreRecord> CONSTRAINT_2 = UniqueKeys0.CONSTRAINT_2;
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// FOREIGN KEY definitions
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
public static final ForeignKey<BookRecord, AuthorRecord> FK_BOOK_AUTHOR = ForeignKeys0.FK_BOOK_AUTHOR;
|
||||
public static final ForeignKey<BookRecord, LanguageRecord> FK_BOOK_LANGUAGE = ForeignKeys0.FK_BOOK_LANGUAGE;
|
||||
public static final ForeignKey<BookToBookStoreRecord, BookStoreRecord> FK_B2BS_BOOK_STORE = ForeignKeys0.FK_B2BS_BOOK_STORE;
|
||||
public static final ForeignKey<BookToBookStoreRecord, BookRecord> FK_B2BS_BOOK = ForeignKeys0.FK_B2BS_BOOK;
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// [#1459] distribute members to avoid static initialisers > 64kb
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
private static class UniqueKeys0 extends AbstractKeys {
|
||||
public static final UniqueKey<LanguageRecord> CONSTRAINT_C = createUniqueKey(Language.LANGUAGE, Language.LANGUAGE.ID);
|
||||
public static final UniqueKey<AuthorRecord> CONSTRAINT_7 = createUniqueKey(Author.AUTHOR, Author.AUTHOR.ID);
|
||||
public static final UniqueKey<BookRecord> CONSTRAINT_1 = createUniqueKey(Book.BOOK, Book.BOOK.ID);
|
||||
public static final UniqueKey<BookStoreRecord> CONSTRAINT_F = createUniqueKey(BookStore.BOOK_STORE, BookStore.BOOK_STORE.NAME);
|
||||
public static final UniqueKey<BookToBookStoreRecord> CONSTRAINT_2 = createUniqueKey(BookToBookStore.BOOK_TO_BOOK_STORE, BookToBookStore.BOOK_TO_BOOK_STORE.NAME, BookToBookStore.BOOK_TO_BOOK_STORE.BOOK_ID);
|
||||
}
|
||||
|
||||
private static class ForeignKeys0 extends AbstractKeys {
|
||||
public static final ForeignKey<BookRecord, AuthorRecord> FK_BOOK_AUTHOR = createForeignKey(sample.jooq.domain.Keys.CONSTRAINT_7, Book.BOOK, Book.BOOK.AUTHOR_ID);
|
||||
public static final ForeignKey<BookRecord, LanguageRecord> FK_BOOK_LANGUAGE = createForeignKey(sample.jooq.domain.Keys.CONSTRAINT_C, Book.BOOK, Book.BOOK.LANGUAGE_ID);
|
||||
public static final ForeignKey<BookToBookStoreRecord, BookStoreRecord> FK_B2BS_BOOK_STORE = createForeignKey(sample.jooq.domain.Keys.CONSTRAINT_F, BookToBookStore.BOOK_TO_BOOK_STORE, BookToBookStore.BOOK_TO_BOOK_STORE.NAME);
|
||||
public static final ForeignKey<BookToBookStoreRecord, BookRecord> FK_B2BS_BOOK = createForeignKey(sample.jooq.domain.Keys.CONSTRAINT_1, BookToBookStore.BOOK_TO_BOOK_STORE, BookToBookStore.BOOK_TO_BOOK_STORE.BOOK_ID);
|
||||
}
|
||||
}
|
@ -0,0 +1,65 @@
|
||||
/**
|
||||
* This class is generated by jOOQ
|
||||
*/
|
||||
package sample.jooq.domain;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Generated;
|
||||
|
||||
import org.jooq.Table;
|
||||
import org.jooq.impl.SchemaImpl;
|
||||
|
||||
import sample.jooq.domain.tables.Author;
|
||||
import sample.jooq.domain.tables.Book;
|
||||
import sample.jooq.domain.tables.BookStore;
|
||||
import sample.jooq.domain.tables.BookToBookStore;
|
||||
import sample.jooq.domain.tables.Language;
|
||||
|
||||
|
||||
/**
|
||||
* This class is generated by jOOQ.
|
||||
*/
|
||||
@Generated(
|
||||
value = {
|
||||
"http://www.jooq.org",
|
||||
"jOOQ version:3.6.2"
|
||||
},
|
||||
comments = "This class is generated by jOOQ"
|
||||
)
|
||||
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
|
||||
public class Public extends SchemaImpl {
|
||||
|
||||
private static final long serialVersionUID = 1051839433;
|
||||
|
||||
/**
|
||||
* The reference instance of <code>PUBLIC</code>
|
||||
*/
|
||||
public static final Public PUBLIC = new Public();
|
||||
|
||||
/**
|
||||
* No further instances allowed
|
||||
*/
|
||||
private Public() {
|
||||
super("PUBLIC");
|
||||
}
|
||||
|
||||
@Override
|
||||
public final List<Table<?>> getTables() {
|
||||
List result = new ArrayList();
|
||||
result.addAll(getTables0());
|
||||
return result;
|
||||
}
|
||||
|
||||
private final List<Table<?>> getTables0() {
|
||||
return Arrays.<Table<?>>asList(
|
||||
Language.LANGUAGE,
|
||||
Author.AUTHOR,
|
||||
Book.BOOK,
|
||||
BookStore.BOOK_STORE,
|
||||
BookToBookStore.BOOK_TO_BOOK_STORE);
|
||||
}
|
||||
}
|
@ -0,0 +1,53 @@
|
||||
/**
|
||||
* This class is generated by jOOQ
|
||||
*/
|
||||
package sample.jooq.domain;
|
||||
|
||||
|
||||
import javax.annotation.Generated;
|
||||
|
||||
import sample.jooq.domain.tables.Author;
|
||||
import sample.jooq.domain.tables.Book;
|
||||
import sample.jooq.domain.tables.BookStore;
|
||||
import sample.jooq.domain.tables.BookToBookStore;
|
||||
import sample.jooq.domain.tables.Language;
|
||||
|
||||
|
||||
/**
|
||||
* Convenience access to all tables in PUBLIC
|
||||
*/
|
||||
@Generated(
|
||||
value = {
|
||||
"http://www.jooq.org",
|
||||
"jOOQ version:3.6.2"
|
||||
},
|
||||
comments = "This class is generated by jOOQ"
|
||||
)
|
||||
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
|
||||
public class Tables {
|
||||
|
||||
/**
|
||||
* The table PUBLIC.LANGUAGE
|
||||
*/
|
||||
public static final Language LANGUAGE = sample.jooq.domain.tables.Language.LANGUAGE;
|
||||
|
||||
/**
|
||||
* The table PUBLIC.AUTHOR
|
||||
*/
|
||||
public static final Author AUTHOR = sample.jooq.domain.tables.Author.AUTHOR;
|
||||
|
||||
/**
|
||||
* The table PUBLIC.BOOK
|
||||
*/
|
||||
public static final Book BOOK = sample.jooq.domain.tables.Book.BOOK;
|
||||
|
||||
/**
|
||||
* The table PUBLIC.BOOK_STORE
|
||||
*/
|
||||
public static final BookStore BOOK_STORE = sample.jooq.domain.tables.BookStore.BOOK_STORE;
|
||||
|
||||
/**
|
||||
* The table PUBLIC.BOOK_TO_BOOK_STORE
|
||||
*/
|
||||
public static final BookToBookStore BOOK_TO_BOOK_STORE = sample.jooq.domain.tables.BookToBookStore.BOOK_TO_BOOK_STORE;
|
||||
}
|
@ -0,0 +1,134 @@
|
||||
/**
|
||||
* This class is generated by jOOQ
|
||||
*/
|
||||
package sample.jooq.domain.tables;
|
||||
|
||||
|
||||
import java.sql.Date;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Generated;
|
||||
|
||||
import org.jooq.Field;
|
||||
import org.jooq.Table;
|
||||
import org.jooq.TableField;
|
||||
import org.jooq.UniqueKey;
|
||||
import org.jooq.impl.TableImpl;
|
||||
|
||||
import sample.jooq.domain.Keys;
|
||||
import sample.jooq.domain.Public;
|
||||
import sample.jooq.domain.tables.records.AuthorRecord;
|
||||
|
||||
|
||||
/**
|
||||
* This class is generated by jOOQ.
|
||||
*/
|
||||
@Generated(
|
||||
value = {
|
||||
"http://www.jooq.org",
|
||||
"jOOQ version:3.6.2"
|
||||
},
|
||||
comments = "This class is generated by jOOQ"
|
||||
)
|
||||
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
|
||||
public class Author extends TableImpl<AuthorRecord> {
|
||||
|
||||
private static final long serialVersionUID = -1989221607;
|
||||
|
||||
/**
|
||||
* The reference instance of <code>PUBLIC.AUTHOR</code>
|
||||
*/
|
||||
public static final Author AUTHOR = new Author();
|
||||
|
||||
/**
|
||||
* The class holding records for this type
|
||||
*/
|
||||
@Override
|
||||
public Class<AuthorRecord> getRecordType() {
|
||||
return AuthorRecord.class;
|
||||
}
|
||||
|
||||
/**
|
||||
* The column <code>PUBLIC.AUTHOR.ID</code>.
|
||||
*/
|
||||
public final TableField<AuthorRecord, Integer> ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, "");
|
||||
|
||||
/**
|
||||
* The column <code>PUBLIC.AUTHOR.FIRST_NAME</code>.
|
||||
*/
|
||||
public final TableField<AuthorRecord, String> FIRST_NAME = createField("FIRST_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(50), this, "");
|
||||
|
||||
/**
|
||||
* The column <code>PUBLIC.AUTHOR.LAST_NAME</code>.
|
||||
*/
|
||||
public final TableField<AuthorRecord, String> LAST_NAME = createField("LAST_NAME", org.jooq.impl.SQLDataType.VARCHAR.length(50).nullable(false), this, "");
|
||||
|
||||
/**
|
||||
* The column <code>PUBLIC.AUTHOR.DATE_OF_BIRTH</code>.
|
||||
*/
|
||||
public final TableField<AuthorRecord, Date> DATE_OF_BIRTH = createField("DATE_OF_BIRTH", org.jooq.impl.SQLDataType.DATE, this, "");
|
||||
|
||||
/**
|
||||
* The column <code>PUBLIC.AUTHOR.YEAR_OF_BIRTH</code>.
|
||||
*/
|
||||
public final TableField<AuthorRecord, Integer> YEAR_OF_BIRTH = createField("YEAR_OF_BIRTH", org.jooq.impl.SQLDataType.INTEGER, this, "");
|
||||
|
||||
/**
|
||||
* The column <code>PUBLIC.AUTHOR.DISTINGUISHED</code>.
|
||||
*/
|
||||
public final TableField<AuthorRecord, Byte> DISTINGUISHED = createField("DISTINGUISHED", org.jooq.impl.SQLDataType.TINYINT, this, "");
|
||||
|
||||
/**
|
||||
* Create a <code>PUBLIC.AUTHOR</code> table reference
|
||||
*/
|
||||
public Author() {
|
||||
this("AUTHOR", null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an aliased <code>PUBLIC.AUTHOR</code> table reference
|
||||
*/
|
||||
public Author(String alias) {
|
||||
this(alias, AUTHOR);
|
||||
}
|
||||
|
||||
private Author(String alias, Table<AuthorRecord> aliased) {
|
||||
this(alias, aliased, null);
|
||||
}
|
||||
|
||||
private Author(String alias, Table<AuthorRecord> aliased, Field<?>[] parameters) {
|
||||
super(alias, Public.PUBLIC, aliased, parameters, "");
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public UniqueKey<AuthorRecord> getPrimaryKey() {
|
||||
return Keys.CONSTRAINT_7;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public List<UniqueKey<AuthorRecord>> getKeys() {
|
||||
return Arrays.<UniqueKey<AuthorRecord>>asList(Keys.CONSTRAINT_7);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Author as(String alias) {
|
||||
return new Author(alias, this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Rename this table
|
||||
*/
|
||||
public Author rename(String name) {
|
||||
return new Author(name, null);
|
||||
}
|
||||
}
|
@ -0,0 +1,137 @@
|
||||
/**
|
||||
* This class is generated by jOOQ
|
||||
*/
|
||||
package sample.jooq.domain.tables;
|
||||
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Generated;
|
||||
|
||||
import org.jooq.Field;
|
||||
import org.jooq.ForeignKey;
|
||||
import org.jooq.Table;
|
||||
import org.jooq.TableField;
|
||||
import org.jooq.UniqueKey;
|
||||
import org.jooq.impl.TableImpl;
|
||||
|
||||
import sample.jooq.domain.Keys;
|
||||
import sample.jooq.domain.Public;
|
||||
import sample.jooq.domain.tables.records.BookRecord;
|
||||
|
||||
|
||||
/**
|
||||
* This class is generated by jOOQ.
|
||||
*/
|
||||
@Generated(
|
||||
value = {
|
||||
"http://www.jooq.org",
|
||||
"jOOQ version:3.6.2"
|
||||
},
|
||||
comments = "This class is generated by jOOQ"
|
||||
)
|
||||
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
|
||||
public class Book extends TableImpl<BookRecord> {
|
||||
|
||||
private static final long serialVersionUID = 1858247563;
|
||||
|
||||
/**
|
||||
* The reference instance of <code>PUBLIC.BOOK</code>
|
||||
*/
|
||||
public static final Book BOOK = new Book();
|
||||
|
||||
/**
|
||||
* The class holding records for this type
|
||||
*/
|
||||
@Override
|
||||
public Class<BookRecord> getRecordType() {
|
||||
return BookRecord.class;
|
||||
}
|
||||
|
||||
/**
|
||||
* The column <code>PUBLIC.BOOK.ID</code>.
|
||||
*/
|
||||
public final TableField<BookRecord, Integer> ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, "");
|
||||
|
||||
/**
|
||||
* The column <code>PUBLIC.BOOK.AUTHOR_ID</code>.
|
||||
*/
|
||||
public final TableField<BookRecord, Integer> AUTHOR_ID = createField("AUTHOR_ID", org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, "");
|
||||
|
||||
/**
|
||||
* The column <code>PUBLIC.BOOK.TITLE</code>.
|
||||
*/
|
||||
public final TableField<BookRecord, String> TITLE = createField("TITLE", org.jooq.impl.SQLDataType.VARCHAR.length(400).nullable(false), this, "");
|
||||
|
||||
/**
|
||||
* The column <code>PUBLIC.BOOK.PUBLISHED_IN</code>.
|
||||
*/
|
||||
public final TableField<BookRecord, Integer> PUBLISHED_IN = createField("PUBLISHED_IN", org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, "");
|
||||
|
||||
/**
|
||||
* The column <code>PUBLIC.BOOK.LANGUAGE_ID</code>.
|
||||
*/
|
||||
public final TableField<BookRecord, Integer> LANGUAGE_ID = createField("LANGUAGE_ID", org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, "");
|
||||
|
||||
/**
|
||||
* Create a <code>PUBLIC.BOOK</code> table reference
|
||||
*/
|
||||
public Book() {
|
||||
this("BOOK", null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an aliased <code>PUBLIC.BOOK</code> table reference
|
||||
*/
|
||||
public Book(String alias) {
|
||||
this(alias, BOOK);
|
||||
}
|
||||
|
||||
private Book(String alias, Table<BookRecord> aliased) {
|
||||
this(alias, aliased, null);
|
||||
}
|
||||
|
||||
private Book(String alias, Table<BookRecord> aliased, Field<?>[] parameters) {
|
||||
super(alias, Public.PUBLIC, aliased, parameters, "");
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public UniqueKey<BookRecord> getPrimaryKey() {
|
||||
return Keys.CONSTRAINT_1;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public List<UniqueKey<BookRecord>> getKeys() {
|
||||
return Arrays.<UniqueKey<BookRecord>>asList(Keys.CONSTRAINT_1);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public List<ForeignKey<BookRecord, ?>> getReferences() {
|
||||
return Arrays.<ForeignKey<BookRecord, ?>>asList(Keys.FK_BOOK_AUTHOR, Keys.FK_BOOK_LANGUAGE);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Book as(String alias) {
|
||||
return new Book(alias, this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Rename this table
|
||||
*/
|
||||
public Book rename(String name) {
|
||||
return new Book(name, null);
|
||||
}
|
||||
}
|
@ -0,0 +1,100 @@
|
||||
/**
|
||||
* This class is generated by jOOQ
|
||||
*/
|
||||
package sample.jooq.domain.tables;
|
||||
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Generated;
|
||||
|
||||
import org.jooq.Field;
|
||||
import org.jooq.Table;
|
||||
import org.jooq.TableField;
|
||||
import org.jooq.UniqueKey;
|
||||
import org.jooq.impl.TableImpl;
|
||||
|
||||
import sample.jooq.domain.Keys;
|
||||
import sample.jooq.domain.Public;
|
||||
import sample.jooq.domain.tables.records.BookStoreRecord;
|
||||
|
||||
|
||||
/**
|
||||
* This class is generated by jOOQ.
|
||||
*/
|
||||
@Generated(
|
||||
value = {
|
||||
"http://www.jooq.org",
|
||||
"jOOQ version:3.6.2"
|
||||
},
|
||||
comments = "This class is generated by jOOQ"
|
||||
)
|
||||
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
|
||||
public class BookStore extends TableImpl<BookStoreRecord> {
|
||||
|
||||
private static final long serialVersionUID = 1437758195;
|
||||
|
||||
/**
|
||||
* The reference instance of <code>PUBLIC.BOOK_STORE</code>
|
||||
*/
|
||||
public static final BookStore BOOK_STORE = new BookStore();
|
||||
|
||||
/**
|
||||
* The class holding records for this type
|
||||
*/
|
||||
@Override
|
||||
public Class<BookStoreRecord> getRecordType() {
|
||||
return BookStoreRecord.class;
|
||||
}
|
||||
|
||||
/**
|
||||
* The column <code>PUBLIC.BOOK_STORE.NAME</code>.
|
||||
*/
|
||||
public final TableField<BookStoreRecord, String> NAME = createField("NAME", org.jooq.impl.SQLDataType.VARCHAR.length(400).nullable(false), this, "");
|
||||
|
||||
/**
|
||||
* Create a <code>PUBLIC.BOOK_STORE</code> table reference
|
||||
*/
|
||||
public BookStore() {
|
||||
this("BOOK_STORE", null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an aliased <code>PUBLIC.BOOK_STORE</code> table reference
|
||||
*/
|
||||
public BookStore(String alias) {
|
||||
this(alias, BOOK_STORE);
|
||||
}
|
||||
|
||||
private BookStore(String alias, Table<BookStoreRecord> aliased) {
|
||||
this(alias, aliased, null);
|
||||
}
|
||||
|
||||
private BookStore(String alias, Table<BookStoreRecord> aliased, Field<?>[] parameters) {
|
||||
super(alias, Public.PUBLIC, aliased, parameters, "");
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public List<UniqueKey<BookStoreRecord>> getKeys() {
|
||||
return Arrays.<UniqueKey<BookStoreRecord>>asList(Keys.CONSTRAINT_F);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public BookStore as(String alias) {
|
||||
return new BookStore(alias, this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Rename this table
|
||||
*/
|
||||
public BookStore rename(String name) {
|
||||
return new BookStore(name, null);
|
||||
}
|
||||
}
|
@ -0,0 +1,127 @@
|
||||
/**
|
||||
* This class is generated by jOOQ
|
||||
*/
|
||||
package sample.jooq.domain.tables;
|
||||
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Generated;
|
||||
|
||||
import org.jooq.Field;
|
||||
import org.jooq.ForeignKey;
|
||||
import org.jooq.Table;
|
||||
import org.jooq.TableField;
|
||||
import org.jooq.UniqueKey;
|
||||
import org.jooq.impl.TableImpl;
|
||||
|
||||
import sample.jooq.domain.Keys;
|
||||
import sample.jooq.domain.Public;
|
||||
import sample.jooq.domain.tables.records.BookToBookStoreRecord;
|
||||
|
||||
|
||||
/**
|
||||
* This class is generated by jOOQ.
|
||||
*/
|
||||
@Generated(
|
||||
value = {
|
||||
"http://www.jooq.org",
|
||||
"jOOQ version:3.6.2"
|
||||
},
|
||||
comments = "This class is generated by jOOQ"
|
||||
)
|
||||
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
|
||||
public class BookToBookStore extends TableImpl<BookToBookStoreRecord> {
|
||||
|
||||
private static final long serialVersionUID = -557222072;
|
||||
|
||||
/**
|
||||
* The reference instance of <code>PUBLIC.BOOK_TO_BOOK_STORE</code>
|
||||
*/
|
||||
public static final BookToBookStore BOOK_TO_BOOK_STORE = new BookToBookStore();
|
||||
|
||||
/**
|
||||
* The class holding records for this type
|
||||
*/
|
||||
@Override
|
||||
public Class<BookToBookStoreRecord> getRecordType() {
|
||||
return BookToBookStoreRecord.class;
|
||||
}
|
||||
|
||||
/**
|
||||
* The column <code>PUBLIC.BOOK_TO_BOOK_STORE.NAME</code>.
|
||||
*/
|
||||
public final TableField<BookToBookStoreRecord, String> NAME = createField("NAME", org.jooq.impl.SQLDataType.VARCHAR.length(400).nullable(false), this, "");
|
||||
|
||||
/**
|
||||
* The column <code>PUBLIC.BOOK_TO_BOOK_STORE.BOOK_ID</code>.
|
||||
*/
|
||||
public final TableField<BookToBookStoreRecord, Integer> BOOK_ID = createField("BOOK_ID", org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, "");
|
||||
|
||||
/**
|
||||
* The column <code>PUBLIC.BOOK_TO_BOOK_STORE.STOCK</code>.
|
||||
*/
|
||||
public final TableField<BookToBookStoreRecord, Integer> STOCK = createField("STOCK", org.jooq.impl.SQLDataType.INTEGER, this, "");
|
||||
|
||||
/**
|
||||
* Create a <code>PUBLIC.BOOK_TO_BOOK_STORE</code> table reference
|
||||
*/
|
||||
public BookToBookStore() {
|
||||
this("BOOK_TO_BOOK_STORE", null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an aliased <code>PUBLIC.BOOK_TO_BOOK_STORE</code> table reference
|
||||
*/
|
||||
public BookToBookStore(String alias) {
|
||||
this(alias, BOOK_TO_BOOK_STORE);
|
||||
}
|
||||
|
||||
private BookToBookStore(String alias, Table<BookToBookStoreRecord> aliased) {
|
||||
this(alias, aliased, null);
|
||||
}
|
||||
|
||||
private BookToBookStore(String alias, Table<BookToBookStoreRecord> aliased, Field<?>[] parameters) {
|
||||
super(alias, Public.PUBLIC, aliased, parameters, "");
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public UniqueKey<BookToBookStoreRecord> getPrimaryKey() {
|
||||
return Keys.CONSTRAINT_2;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public List<UniqueKey<BookToBookStoreRecord>> getKeys() {
|
||||
return Arrays.<UniqueKey<BookToBookStoreRecord>>asList(Keys.CONSTRAINT_2);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public List<ForeignKey<BookToBookStoreRecord, ?>> getReferences() {
|
||||
return Arrays.<ForeignKey<BookToBookStoreRecord, ?>>asList(Keys.FK_B2BS_BOOK_STORE, Keys.FK_B2BS_BOOK);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public BookToBookStore as(String alias) {
|
||||
return new BookToBookStore(alias, this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Rename this table
|
||||
*/
|
||||
public BookToBookStore rename(String name) {
|
||||
return new BookToBookStore(name, null);
|
||||
}
|
||||
}
|
@ -0,0 +1,118 @@
|
||||
/**
|
||||
* This class is generated by jOOQ
|
||||
*/
|
||||
package sample.jooq.domain.tables;
|
||||
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Generated;
|
||||
|
||||
import org.jooq.Field;
|
||||
import org.jooq.Table;
|
||||
import org.jooq.TableField;
|
||||
import org.jooq.UniqueKey;
|
||||
import org.jooq.impl.TableImpl;
|
||||
|
||||
import sample.jooq.domain.Keys;
|
||||
import sample.jooq.domain.Public;
|
||||
import sample.jooq.domain.tables.records.LanguageRecord;
|
||||
|
||||
|
||||
/**
|
||||
* This class is generated by jOOQ.
|
||||
*/
|
||||
@Generated(
|
||||
value = {
|
||||
"http://www.jooq.org",
|
||||
"jOOQ version:3.6.2"
|
||||
},
|
||||
comments = "This class is generated by jOOQ"
|
||||
)
|
||||
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
|
||||
public class Language extends TableImpl<LanguageRecord> {
|
||||
|
||||
private static final long serialVersionUID = -192479483;
|
||||
|
||||
/**
|
||||
* The reference instance of <code>PUBLIC.LANGUAGE</code>
|
||||
*/
|
||||
public static final Language LANGUAGE = new Language();
|
||||
|
||||
/**
|
||||
* The class holding records for this type
|
||||
*/
|
||||
@Override
|
||||
public Class<LanguageRecord> getRecordType() {
|
||||
return LanguageRecord.class;
|
||||
}
|
||||
|
||||
/**
|
||||
* The column <code>PUBLIC.LANGUAGE.ID</code>.
|
||||
*/
|
||||
public final TableField<LanguageRecord, Integer> ID = createField("ID", org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, "");
|
||||
|
||||
/**
|
||||
* The column <code>PUBLIC.LANGUAGE.CD</code>.
|
||||
*/
|
||||
public final TableField<LanguageRecord, String> CD = createField("CD", org.jooq.impl.SQLDataType.CHAR.length(2).nullable(false), this, "");
|
||||
|
||||
/**
|
||||
* The column <code>PUBLIC.LANGUAGE.DESCRIPTION</code>.
|
||||
*/
|
||||
public final TableField<LanguageRecord, String> DESCRIPTION = createField("DESCRIPTION", org.jooq.impl.SQLDataType.VARCHAR.length(50), this, "");
|
||||
|
||||
/**
|
||||
* Create a <code>PUBLIC.LANGUAGE</code> table reference
|
||||
*/
|
||||
public Language() {
|
||||
this("LANGUAGE", null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an aliased <code>PUBLIC.LANGUAGE</code> table reference
|
||||
*/
|
||||
public Language(String alias) {
|
||||
this(alias, LANGUAGE);
|
||||
}
|
||||
|
||||
private Language(String alias, Table<LanguageRecord> aliased) {
|
||||
this(alias, aliased, null);
|
||||
}
|
||||
|
||||
private Language(String alias, Table<LanguageRecord> aliased, Field<?>[] parameters) {
|
||||
super(alias, Public.PUBLIC, aliased, parameters, "");
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public UniqueKey<LanguageRecord> getPrimaryKey() {
|
||||
return Keys.CONSTRAINT_C;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public List<UniqueKey<LanguageRecord>> getKeys() {
|
||||
return Arrays.<UniqueKey<LanguageRecord>>asList(Keys.CONSTRAINT_C);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Language as(String alias) {
|
||||
return new Language(alias, this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Rename this table
|
||||
*/
|
||||
public Language rename(String name) {
|
||||
return new Language(name, null);
|
||||
}
|
||||
}
|
@ -0,0 +1,339 @@
|
||||
/**
|
||||
* This class is generated by jOOQ
|
||||
*/
|
||||
package sample.jooq.domain.tables.records;
|
||||
|
||||
|
||||
import java.sql.Date;
|
||||
|
||||
import javax.annotation.Generated;
|
||||
|
||||
import org.jooq.Field;
|
||||
import org.jooq.Record1;
|
||||
import org.jooq.Record6;
|
||||
import org.jooq.Row6;
|
||||
import org.jooq.impl.UpdatableRecordImpl;
|
||||
|
||||
import sample.jooq.domain.tables.Author;
|
||||
|
||||
|
||||
/**
|
||||
* This class is generated by jOOQ.
|
||||
*/
|
||||
@Generated(
|
||||
value = {
|
||||
"http://www.jooq.org",
|
||||
"jOOQ version:3.6.2"
|
||||
},
|
||||
comments = "This class is generated by jOOQ"
|
||||
)
|
||||
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
|
||||
public class AuthorRecord extends UpdatableRecordImpl<AuthorRecord> implements Record6<Integer, String, String, Date, Integer, Byte> {
|
||||
|
||||
private static final long serialVersionUID = -983051550;
|
||||
|
||||
/**
|
||||
* Setter for <code>PUBLIC.AUTHOR.ID</code>.
|
||||
*/
|
||||
public void setId(Integer value) {
|
||||
setValue(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for <code>PUBLIC.AUTHOR.ID</code>.
|
||||
*/
|
||||
public Integer getId() {
|
||||
return (Integer) getValue(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter for <code>PUBLIC.AUTHOR.FIRST_NAME</code>.
|
||||
*/
|
||||
public void setFirstName(String value) {
|
||||
setValue(1, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for <code>PUBLIC.AUTHOR.FIRST_NAME</code>.
|
||||
*/
|
||||
public String getFirstName() {
|
||||
return (String) getValue(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter for <code>PUBLIC.AUTHOR.LAST_NAME</code>.
|
||||
*/
|
||||
public void setLastName(String value) {
|
||||
setValue(2, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for <code>PUBLIC.AUTHOR.LAST_NAME</code>.
|
||||
*/
|
||||
public String getLastName() {
|
||||
return (String) getValue(2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter for <code>PUBLIC.AUTHOR.DATE_OF_BIRTH</code>.
|
||||
*/
|
||||
public void setDateOfBirth(Date value) {
|
||||
setValue(3, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for <code>PUBLIC.AUTHOR.DATE_OF_BIRTH</code>.
|
||||
*/
|
||||
public Date getDateOfBirth() {
|
||||
return (Date) getValue(3);
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter for <code>PUBLIC.AUTHOR.YEAR_OF_BIRTH</code>.
|
||||
*/
|
||||
public void setYearOfBirth(Integer value) {
|
||||
setValue(4, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for <code>PUBLIC.AUTHOR.YEAR_OF_BIRTH</code>.
|
||||
*/
|
||||
public Integer getYearOfBirth() {
|
||||
return (Integer) getValue(4);
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter for <code>PUBLIC.AUTHOR.DISTINGUISHED</code>.
|
||||
*/
|
||||
public void setDistinguished(Byte value) {
|
||||
setValue(5, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for <code>PUBLIC.AUTHOR.DISTINGUISHED</code>.
|
||||
*/
|
||||
public Byte getDistinguished() {
|
||||
return (Byte) getValue(5);
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Primary key information
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Record1<Integer> key() {
|
||||
return (Record1) super.key();
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Record6 type implementation
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Row6<Integer, String, String, Date, Integer, Byte> fieldsRow() {
|
||||
return (Row6) super.fieldsRow();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Row6<Integer, String, String, Date, Integer, Byte> valuesRow() {
|
||||
return (Row6) super.valuesRow();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Field<Integer> field1() {
|
||||
return Author.AUTHOR.ID;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Field<String> field2() {
|
||||
return Author.AUTHOR.FIRST_NAME;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Field<String> field3() {
|
||||
return Author.AUTHOR.LAST_NAME;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Field<Date> field4() {
|
||||
return Author.AUTHOR.DATE_OF_BIRTH;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Field<Integer> field5() {
|
||||
return Author.AUTHOR.YEAR_OF_BIRTH;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Field<Byte> field6() {
|
||||
return Author.AUTHOR.DISTINGUISHED;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Integer value1() {
|
||||
return getId();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public String value2() {
|
||||
return getFirstName();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public String value3() {
|
||||
return getLastName();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Date value4() {
|
||||
return getDateOfBirth();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Integer value5() {
|
||||
return getYearOfBirth();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Byte value6() {
|
||||
return getDistinguished();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public AuthorRecord value1(Integer value) {
|
||||
setId(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public AuthorRecord value2(String value) {
|
||||
setFirstName(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public AuthorRecord value3(String value) {
|
||||
setLastName(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public AuthorRecord value4(Date value) {
|
||||
setDateOfBirth(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public AuthorRecord value5(Integer value) {
|
||||
setYearOfBirth(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public AuthorRecord value6(Byte value) {
|
||||
setDistinguished(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public AuthorRecord values(Integer value1, String value2, String value3, Date value4, Integer value5, Byte value6) {
|
||||
value1(value1);
|
||||
value2(value2);
|
||||
value3(value3);
|
||||
value4(value4);
|
||||
value5(value5);
|
||||
value6(value6);
|
||||
return this;
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Constructors
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Create a detached AuthorRecord
|
||||
*/
|
||||
public AuthorRecord() {
|
||||
super(Author.AUTHOR);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a detached, initialised AuthorRecord
|
||||
*/
|
||||
public AuthorRecord(Integer id, String firstName, String lastName, Date dateOfBirth, Integer yearOfBirth, Byte distinguished) {
|
||||
super(Author.AUTHOR);
|
||||
|
||||
setValue(0, id);
|
||||
setValue(1, firstName);
|
||||
setValue(2, lastName);
|
||||
setValue(3, dateOfBirth);
|
||||
setValue(4, yearOfBirth);
|
||||
setValue(5, distinguished);
|
||||
}
|
||||
}
|
@ -0,0 +1,296 @@
|
||||
/**
|
||||
* This class is generated by jOOQ
|
||||
*/
|
||||
package sample.jooq.domain.tables.records;
|
||||
|
||||
|
||||
import javax.annotation.Generated;
|
||||
|
||||
import org.jooq.Field;
|
||||
import org.jooq.Record1;
|
||||
import org.jooq.Record5;
|
||||
import org.jooq.Row5;
|
||||
import org.jooq.impl.UpdatableRecordImpl;
|
||||
|
||||
import sample.jooq.domain.tables.Book;
|
||||
|
||||
|
||||
/**
|
||||
* This class is generated by jOOQ.
|
||||
*/
|
||||
@Generated(
|
||||
value = {
|
||||
"http://www.jooq.org",
|
||||
"jOOQ version:3.6.2"
|
||||
},
|
||||
comments = "This class is generated by jOOQ"
|
||||
)
|
||||
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
|
||||
public class BookRecord extends UpdatableRecordImpl<BookRecord> implements Record5<Integer, Integer, String, Integer, Integer> {
|
||||
|
||||
private static final long serialVersionUID = 220424682;
|
||||
|
||||
/**
|
||||
* Setter for <code>PUBLIC.BOOK.ID</code>.
|
||||
*/
|
||||
public void setId(Integer value) {
|
||||
setValue(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for <code>PUBLIC.BOOK.ID</code>.
|
||||
*/
|
||||
public Integer getId() {
|
||||
return (Integer) getValue(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter for <code>PUBLIC.BOOK.AUTHOR_ID</code>.
|
||||
*/
|
||||
public void setAuthorId(Integer value) {
|
||||
setValue(1, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for <code>PUBLIC.BOOK.AUTHOR_ID</code>.
|
||||
*/
|
||||
public Integer getAuthorId() {
|
||||
return (Integer) getValue(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter for <code>PUBLIC.BOOK.TITLE</code>.
|
||||
*/
|
||||
public void setTitle(String value) {
|
||||
setValue(2, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for <code>PUBLIC.BOOK.TITLE</code>.
|
||||
*/
|
||||
public String getTitle() {
|
||||
return (String) getValue(2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter for <code>PUBLIC.BOOK.PUBLISHED_IN</code>.
|
||||
*/
|
||||
public void setPublishedIn(Integer value) {
|
||||
setValue(3, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for <code>PUBLIC.BOOK.PUBLISHED_IN</code>.
|
||||
*/
|
||||
public Integer getPublishedIn() {
|
||||
return (Integer) getValue(3);
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter for <code>PUBLIC.BOOK.LANGUAGE_ID</code>.
|
||||
*/
|
||||
public void setLanguageId(Integer value) {
|
||||
setValue(4, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for <code>PUBLIC.BOOK.LANGUAGE_ID</code>.
|
||||
*/
|
||||
public Integer getLanguageId() {
|
||||
return (Integer) getValue(4);
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Primary key information
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Record1<Integer> key() {
|
||||
return (Record1) super.key();
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Record5 type implementation
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Row5<Integer, Integer, String, Integer, Integer> fieldsRow() {
|
||||
return (Row5) super.fieldsRow();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Row5<Integer, Integer, String, Integer, Integer> valuesRow() {
|
||||
return (Row5) super.valuesRow();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Field<Integer> field1() {
|
||||
return Book.BOOK.ID;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Field<Integer> field2() {
|
||||
return Book.BOOK.AUTHOR_ID;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Field<String> field3() {
|
||||
return Book.BOOK.TITLE;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Field<Integer> field4() {
|
||||
return Book.BOOK.PUBLISHED_IN;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Field<Integer> field5() {
|
||||
return Book.BOOK.LANGUAGE_ID;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Integer value1() {
|
||||
return getId();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Integer value2() {
|
||||
return getAuthorId();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public String value3() {
|
||||
return getTitle();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Integer value4() {
|
||||
return getPublishedIn();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Integer value5() {
|
||||
return getLanguageId();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public BookRecord value1(Integer value) {
|
||||
setId(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public BookRecord value2(Integer value) {
|
||||
setAuthorId(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public BookRecord value3(String value) {
|
||||
setTitle(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public BookRecord value4(Integer value) {
|
||||
setPublishedIn(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public BookRecord value5(Integer value) {
|
||||
setLanguageId(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public BookRecord values(Integer value1, Integer value2, String value3, Integer value4, Integer value5) {
|
||||
value1(value1);
|
||||
value2(value2);
|
||||
value3(value3);
|
||||
value4(value4);
|
||||
value5(value5);
|
||||
return this;
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Constructors
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Create a detached BookRecord
|
||||
*/
|
||||
public BookRecord() {
|
||||
super(Book.BOOK);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a detached, initialised BookRecord
|
||||
*/
|
||||
public BookRecord(Integer id, Integer authorId, String title, Integer publishedIn, Integer languageId) {
|
||||
super(Book.BOOK);
|
||||
|
||||
setValue(0, id);
|
||||
setValue(1, authorId);
|
||||
setValue(2, title);
|
||||
setValue(3, publishedIn);
|
||||
setValue(4, languageId);
|
||||
}
|
||||
}
|
@ -0,0 +1,119 @@
|
||||
/**
|
||||
* This class is generated by jOOQ
|
||||
*/
|
||||
package sample.jooq.domain.tables.records;
|
||||
|
||||
|
||||
import javax.annotation.Generated;
|
||||
|
||||
import org.jooq.Field;
|
||||
import org.jooq.Record1;
|
||||
import org.jooq.Row1;
|
||||
import org.jooq.impl.TableRecordImpl;
|
||||
|
||||
import sample.jooq.domain.tables.BookStore;
|
||||
|
||||
|
||||
/**
|
||||
* This class is generated by jOOQ.
|
||||
*/
|
||||
@Generated(
|
||||
value = {
|
||||
"http://www.jooq.org",
|
||||
"jOOQ version:3.6.2"
|
||||
},
|
||||
comments = "This class is generated by jOOQ"
|
||||
)
|
||||
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
|
||||
public class BookStoreRecord extends TableRecordImpl<BookStoreRecord> implements Record1<String> {
|
||||
|
||||
private static final long serialVersionUID = -1969224219;
|
||||
|
||||
/**
|
||||
* Setter for <code>PUBLIC.BOOK_STORE.NAME</code>.
|
||||
*/
|
||||
public void setName(String value) {
|
||||
setValue(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for <code>PUBLIC.BOOK_STORE.NAME</code>.
|
||||
*/
|
||||
public String getName() {
|
||||
return (String) getValue(0);
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Record1 type implementation
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Row1<String> fieldsRow() {
|
||||
return (Row1) super.fieldsRow();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Row1<String> valuesRow() {
|
||||
return (Row1) super.valuesRow();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Field<String> field1() {
|
||||
return BookStore.BOOK_STORE.NAME;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public String value1() {
|
||||
return getName();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public BookStoreRecord value1(String value) {
|
||||
setName(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public BookStoreRecord values(String value1) {
|
||||
value1(value1);
|
||||
return this;
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Constructors
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Create a detached BookStoreRecord
|
||||
*/
|
||||
public BookStoreRecord() {
|
||||
super(BookStore.BOOK_STORE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a detached, initialised BookStoreRecord
|
||||
*/
|
||||
public BookStoreRecord(String name) {
|
||||
super(BookStore.BOOK_STORE);
|
||||
|
||||
setValue(0, name);
|
||||
}
|
||||
}
|
@ -0,0 +1,214 @@
|
||||
/**
|
||||
* This class is generated by jOOQ
|
||||
*/
|
||||
package sample.jooq.domain.tables.records;
|
||||
|
||||
|
||||
import javax.annotation.Generated;
|
||||
|
||||
import org.jooq.Field;
|
||||
import org.jooq.Record2;
|
||||
import org.jooq.Record3;
|
||||
import org.jooq.Row3;
|
||||
import org.jooq.impl.UpdatableRecordImpl;
|
||||
|
||||
import sample.jooq.domain.tables.BookToBookStore;
|
||||
|
||||
|
||||
/**
|
||||
* This class is generated by jOOQ.
|
||||
*/
|
||||
@Generated(
|
||||
value = {
|
||||
"http://www.jooq.org",
|
||||
"jOOQ version:3.6.2"
|
||||
},
|
||||
comments = "This class is generated by jOOQ"
|
||||
)
|
||||
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
|
||||
public class BookToBookStoreRecord extends UpdatableRecordImpl<BookToBookStoreRecord> implements Record3<String, Integer, Integer> {
|
||||
|
||||
private static final long serialVersionUID = 1124329527;
|
||||
|
||||
/**
|
||||
* Setter for <code>PUBLIC.BOOK_TO_BOOK_STORE.NAME</code>.
|
||||
*/
|
||||
public void setName(String value) {
|
||||
setValue(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for <code>PUBLIC.BOOK_TO_BOOK_STORE.NAME</code>.
|
||||
*/
|
||||
public String getName() {
|
||||
return (String) getValue(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter for <code>PUBLIC.BOOK_TO_BOOK_STORE.BOOK_ID</code>.
|
||||
*/
|
||||
public void setBookId(Integer value) {
|
||||
setValue(1, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for <code>PUBLIC.BOOK_TO_BOOK_STORE.BOOK_ID</code>.
|
||||
*/
|
||||
public Integer getBookId() {
|
||||
return (Integer) getValue(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter for <code>PUBLIC.BOOK_TO_BOOK_STORE.STOCK</code>.
|
||||
*/
|
||||
public void setStock(Integer value) {
|
||||
setValue(2, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for <code>PUBLIC.BOOK_TO_BOOK_STORE.STOCK</code>.
|
||||
*/
|
||||
public Integer getStock() {
|
||||
return (Integer) getValue(2);
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Primary key information
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Record2<String, Integer> key() {
|
||||
return (Record2) super.key();
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Record3 type implementation
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Row3<String, Integer, Integer> fieldsRow() {
|
||||
return (Row3) super.fieldsRow();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Row3<String, Integer, Integer> valuesRow() {
|
||||
return (Row3) super.valuesRow();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Field<String> field1() {
|
||||
return BookToBookStore.BOOK_TO_BOOK_STORE.NAME;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Field<Integer> field2() {
|
||||
return BookToBookStore.BOOK_TO_BOOK_STORE.BOOK_ID;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Field<Integer> field3() {
|
||||
return BookToBookStore.BOOK_TO_BOOK_STORE.STOCK;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public String value1() {
|
||||
return getName();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Integer value2() {
|
||||
return getBookId();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Integer value3() {
|
||||
return getStock();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public BookToBookStoreRecord value1(String value) {
|
||||
setName(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public BookToBookStoreRecord value2(Integer value) {
|
||||
setBookId(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public BookToBookStoreRecord value3(Integer value) {
|
||||
setStock(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public BookToBookStoreRecord values(String value1, Integer value2, Integer value3) {
|
||||
value1(value1);
|
||||
value2(value2);
|
||||
value3(value3);
|
||||
return this;
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Constructors
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Create a detached BookToBookStoreRecord
|
||||
*/
|
||||
public BookToBookStoreRecord() {
|
||||
super(BookToBookStore.BOOK_TO_BOOK_STORE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a detached, initialised BookToBookStoreRecord
|
||||
*/
|
||||
public BookToBookStoreRecord(String name, Integer bookId, Integer stock) {
|
||||
super(BookToBookStore.BOOK_TO_BOOK_STORE);
|
||||
|
||||
setValue(0, name);
|
||||
setValue(1, bookId);
|
||||
setValue(2, stock);
|
||||
}
|
||||
}
|
@ -0,0 +1,214 @@
|
||||
/**
|
||||
* This class is generated by jOOQ
|
||||
*/
|
||||
package sample.jooq.domain.tables.records;
|
||||
|
||||
|
||||
import javax.annotation.Generated;
|
||||
|
||||
import org.jooq.Field;
|
||||
import org.jooq.Record1;
|
||||
import org.jooq.Record3;
|
||||
import org.jooq.Row3;
|
||||
import org.jooq.impl.UpdatableRecordImpl;
|
||||
|
||||
import sample.jooq.domain.tables.Language;
|
||||
|
||||
|
||||
/**
|
||||
* This class is generated by jOOQ.
|
||||
*/
|
||||
@Generated(
|
||||
value = {
|
||||
"http://www.jooq.org",
|
||||
"jOOQ version:3.6.2"
|
||||
},
|
||||
comments = "This class is generated by jOOQ"
|
||||
)
|
||||
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
|
||||
public class LanguageRecord extends UpdatableRecordImpl<LanguageRecord> implements Record3<Integer, String, String> {
|
||||
|
||||
private static final long serialVersionUID = -1003202585;
|
||||
|
||||
/**
|
||||
* Setter for <code>PUBLIC.LANGUAGE.ID</code>.
|
||||
*/
|
||||
public void setId(Integer value) {
|
||||
setValue(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for <code>PUBLIC.LANGUAGE.ID</code>.
|
||||
*/
|
||||
public Integer getId() {
|
||||
return (Integer) getValue(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter for <code>PUBLIC.LANGUAGE.CD</code>.
|
||||
*/
|
||||
public void setCd(String value) {
|
||||
setValue(1, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for <code>PUBLIC.LANGUAGE.CD</code>.
|
||||
*/
|
||||
public String getCd() {
|
||||
return (String) getValue(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter for <code>PUBLIC.LANGUAGE.DESCRIPTION</code>.
|
||||
*/
|
||||
public void setDescription(String value) {
|
||||
setValue(2, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for <code>PUBLIC.LANGUAGE.DESCRIPTION</code>.
|
||||
*/
|
||||
public String getDescription() {
|
||||
return (String) getValue(2);
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Primary key information
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Record1<Integer> key() {
|
||||
return (Record1) super.key();
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Record3 type implementation
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Row3<Integer, String, String> fieldsRow() {
|
||||
return (Row3) super.fieldsRow();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Row3<Integer, String, String> valuesRow() {
|
||||
return (Row3) super.valuesRow();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Field<Integer> field1() {
|
||||
return Language.LANGUAGE.ID;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Field<String> field2() {
|
||||
return Language.LANGUAGE.CD;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Field<String> field3() {
|
||||
return Language.LANGUAGE.DESCRIPTION;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Integer value1() {
|
||||
return getId();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public String value2() {
|
||||
return getCd();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public String value3() {
|
||||
return getDescription();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public LanguageRecord value1(Integer value) {
|
||||
setId(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public LanguageRecord value2(String value) {
|
||||
setCd(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public LanguageRecord value3(String value) {
|
||||
setDescription(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public LanguageRecord values(Integer value1, String value2, String value3) {
|
||||
value1(value1);
|
||||
value2(value2);
|
||||
value3(value3);
|
||||
return this;
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Constructors
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Create a detached LanguageRecord
|
||||
*/
|
||||
public LanguageRecord() {
|
||||
super(Language.LANGUAGE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a detached, initialised LanguageRecord
|
||||
*/
|
||||
public LanguageRecord(Integer id, String cd, String description) {
|
||||
super(Language.LANGUAGE);
|
||||
|
||||
setValue(0, id);
|
||||
setValue(1, cd);
|
||||
setValue(2, description);
|
||||
}
|
||||
}
|
@ -0,0 +1,171 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<!-- Your own application should inherit from spring-boot-starter-parent -->
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-samples</artifactId>
|
||||
<version>1.3.0.BUILD-SNAPSHOT</version>
|
||||
</parent>
|
||||
<artifactId>spring-boot-sample-jooq</artifactId>
|
||||
<name>Spring Boot jOOQ Sample</name>
|
||||
<description>Spring Boot jOOQ Sample</description>
|
||||
<url>http://projects.spring.io/spring-boot/</url>
|
||||
<organization>
|
||||
<name>Pivotal Software, Inc.</name>
|
||||
<url>http://www.spring.io</url>
|
||||
</organization>
|
||||
<properties>
|
||||
<main.basedir>${basedir}/../..</main.basedir>
|
||||
</properties>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-jooq</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.h2database</groupId>
|
||||
<artifactId>h2</artifactId>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>build-helper-maven-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>generate-sources</phase>
|
||||
<goals>
|
||||
<goal>add-source</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<sources>
|
||||
<source>gensrc/main/java</source>
|
||||
</sources>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
<pluginManagement>
|
||||
<plugins>
|
||||
<!--This plugin's configuration is used to store Eclipse m2e settings
|
||||
only. It has no influence on the Maven build itself. -->
|
||||
<plugin>
|
||||
<groupId>org.eclipse.m2e</groupId>
|
||||
<artifactId>lifecycle-mapping</artifactId>
|
||||
<version>1.0.0</version>
|
||||
<configuration>
|
||||
<lifecycleMappingMetadata>
|
||||
<pluginExecutions>
|
||||
<pluginExecution>
|
||||
<pluginExecutionFilter>
|
||||
<groupId>org.jooq</groupId>
|
||||
<artifactId>
|
||||
jooq-codegen-maven
|
||||
</artifactId>
|
||||
<versionRange>
|
||||
[3.6.2,)
|
||||
</versionRange>
|
||||
<goals>
|
||||
<goal>generate</goal>
|
||||
</goals>
|
||||
</pluginExecutionFilter>
|
||||
<action>
|
||||
<ignore></ignore>
|
||||
</action>
|
||||
</pluginExecution>
|
||||
</pluginExecutions>
|
||||
</lifecycleMappingMetadata>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</pluginManagement>
|
||||
</build>
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>generate</id>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>sql-maven-plugin</artifactId>
|
||||
<version>1.5</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>generate-sources</phase>
|
||||
<goals>
|
||||
<goal>execute</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.h2database</groupId>
|
||||
<artifactId>h2</artifactId>
|
||||
<version>${h2.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<configuration>
|
||||
<driver>org.h2.Driver</driver>
|
||||
<url>jdbc:h2:~/springbootjooq</url>
|
||||
<srcFiles>
|
||||
<srcFile>${basedir}/src/main/resources/reset.sql</srcFile>
|
||||
<srcFile>${basedir}/src/main/resources/schema.sql</srcFile>
|
||||
</srcFiles>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.jooq</groupId>
|
||||
<artifactId>jooq-codegen-maven</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>generate</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.h2database</groupId>
|
||||
<artifactId>h2</artifactId>
|
||||
<version>${h2.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<configuration>
|
||||
<jdbc>
|
||||
<driver>org.h2.Driver</driver>
|
||||
<url>jdbc:h2:~/springbootjooq</url>
|
||||
</jdbc>
|
||||
<generator>
|
||||
<name>org.jooq.util.DefaultGenerator</name>
|
||||
<database>
|
||||
<name>org.jooq.util.h2.H2Database</name>
|
||||
<includes>.*</includes>
|
||||
<excludes></excludes>
|
||||
<inputSchema>PUBLIC</inputSchema>
|
||||
</database>
|
||||
<target>
|
||||
<packageName>sample.jooq.domain</packageName>
|
||||
<directory>${basedir}/gensrc/main/java</directory>
|
||||
</target>
|
||||
</generator>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
</profiles>
|
||||
</project>
|
@ -0,0 +1,80 @@
|
||||
/*
|
||||
* Copyright 2012-2015 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package sample.jooq;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
|
||||
import org.jooq.DSLContext;
|
||||
import org.jooq.Query;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Result;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.CommandLineRunner;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
import org.springframework.jdbc.core.RowMapper;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import static sample.jooq.domain.tables.Author.AUTHOR;
|
||||
import static sample.jooq.domain.tables.Book.BOOK;
|
||||
|
||||
@Component
|
||||
public class JooqExamples implements CommandLineRunner {
|
||||
|
||||
private final DSLContext dsl;
|
||||
|
||||
private final JdbcTemplate jdbc;
|
||||
|
||||
@Autowired
|
||||
public JooqExamples(DSLContext dsl, JdbcTemplate jdbc) {
|
||||
this.dsl = dsl;
|
||||
this.jdbc = jdbc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(String... args) throws Exception {
|
||||
jooqFetch();
|
||||
jooqSql();
|
||||
}
|
||||
|
||||
private void jooqFetch() {
|
||||
Result<Record> results = this.dsl.select().from(AUTHOR).fetch();
|
||||
for (Record result : results) {
|
||||
Integer id = result.getValue(AUTHOR.ID);
|
||||
String firstName = result.getValue(AUTHOR.FIRST_NAME);
|
||||
String lastName = result.getValue(AUTHOR.LAST_NAME);
|
||||
System.out.println("jOOQ Fetch " + id + " " + firstName + " " + lastName);
|
||||
}
|
||||
}
|
||||
|
||||
private void jooqSql() {
|
||||
Query query = this.dsl.select(BOOK.TITLE, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
|
||||
.from(BOOK).join(AUTHOR).on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
|
||||
.where(BOOK.PUBLISHED_IN.equal(2015));
|
||||
Object[] bind = query.getBindValues().toArray(new Object[] {});
|
||||
List<String> list = this.jdbc.query(query.getSQL(), bind,
|
||||
new RowMapper<String>() {
|
||||
@Override
|
||||
public String mapRow(ResultSet rs, int rowNum) throws SQLException {
|
||||
return rs.getString(1) + " : " + rs.getString(2) + " "
|
||||
+ rs.getString(3);
|
||||
}
|
||||
});
|
||||
System.out.println("jOOQ SQL " + list);
|
||||
}
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
/*
|
||||
* Copyright 2012-2015 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package sample.jooq;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
@SpringBootApplication
|
||||
public class SampleJooqApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(SampleJooqApplication.class, args);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
INSERT INTO language VALUES (1, 'EN', 'English');
|
||||
|
||||
INSERT INTO author VALUES (1, 'Greg', 'Turnquest', '1804-09-17', 1804, 1);
|
||||
INSERT INTO author VALUES (2, 'Craig', 'Walls', '1804-09-18', 1804, 1);
|
||||
|
||||
INSERT INTO book VALUES (1, 1, 'Learning Spring Boot', 2015, 1);
|
||||
INSERT INTO book VALUES (2, 2, 'Spring Boot in Action', 2015, 1);
|
||||
|
||||
INSERT INTO book_store VALUES ('Barnes & Noble');
|
||||
|
||||
INSERT INTO book_to_book_store VALUES ('Barnes & Noble', 1, 10);
|
||||
INSERT INTO book_to_book_store VALUES ('Barnes & Noble', 2, 3);
|
@ -0,0 +1 @@
|
||||
DROP ALL OBJECTS;
|
@ -0,0 +1,39 @@
|
||||
CREATE TABLE language (
|
||||
id NUMBER(7) NOT NULL PRIMARY KEY,
|
||||
cd CHAR(2) NOT NULL,
|
||||
description VARCHAR2(50)
|
||||
);
|
||||
|
||||
CREATE TABLE author (
|
||||
id NUMBER(7) NOT NULL PRIMARY KEY,
|
||||
first_name VARCHAR2(50),
|
||||
last_name VARCHAR2(50) NOT NULL,
|
||||
date_of_birth DATE,
|
||||
year_of_birth NUMBER(7),
|
||||
distinguished NUMBER(1)
|
||||
);
|
||||
|
||||
CREATE TABLE book (
|
||||
id NUMBER(7) NOT NULL PRIMARY KEY,
|
||||
author_id NUMBER(7) NOT NULL,
|
||||
title VARCHAR2(400) NOT NULL,
|
||||
published_in NUMBER(7) NOT NULL,
|
||||
language_id NUMBER(7) NOT NULL,
|
||||
|
||||
CONSTRAINT fk_book_author FOREIGN KEY (author_id) REFERENCES author(id),
|
||||
CONSTRAINT fk_book_language FOREIGN KEY (language_id) REFERENCES language(id)
|
||||
);
|
||||
|
||||
CREATE TABLE book_store (
|
||||
name VARCHAR2(400) NOT NULL UNIQUE
|
||||
);
|
||||
|
||||
CREATE TABLE book_to_book_store (
|
||||
name VARCHAR2(400) NOT NULL,
|
||||
book_id INTEGER NOT NULL,
|
||||
stock INTEGER,
|
||||
|
||||
PRIMARY KEY(name, book_id),
|
||||
CONSTRAINT fk_b2bs_book_store FOREIGN KEY (name) REFERENCES book_store (name) ON DELETE CASCADE,
|
||||
CONSTRAINT fk_b2bs_book FOREIGN KEY (book_id) REFERENCES book (id) ON DELETE CASCADE
|
||||
);
|
@ -0,0 +1,46 @@
|
||||
/*
|
||||
* Copyright 2012-2015 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package sample.jooq;
|
||||
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.springframework.boot.test.OutputCapture;
|
||||
|
||||
import static org.hamcrest.Matchers.containsString;
|
||||
import static org.junit.Assert.assertThat;
|
||||
|
||||
/**
|
||||
* Integration tests for {@link SampleJooqApplication}.
|
||||
*/
|
||||
public class SampleJooqApplicationTests {
|
||||
|
||||
private static final String[] NO_ARGS = {};
|
||||
|
||||
@Rule
|
||||
public OutputCapture out = new OutputCapture();
|
||||
|
||||
@Test
|
||||
public void outputResults() throws Exception {
|
||||
SampleJooqApplication.main(NO_ARGS);
|
||||
assertThat(this.out.toString(), containsString("jOOQ Fetch 1 Greg Turnquest"));
|
||||
assertThat(this.out.toString(), containsString("jOOQ Fetch 2 Craig Walls"));
|
||||
assertThat(this.out.toString(), containsString("jOOQ SQL "
|
||||
+ "[Learning Spring Boot : Greg Turnquest, "
|
||||
+ "Spring Boot in Action : Craig Walls]"));
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starters</artifactId>
|
||||
<version>1.3.0.BUILD-SNAPSHOT</version>
|
||||
</parent>
|
||||
<artifactId>spring-boot-starter-jooq</artifactId>
|
||||
<name>Spring Boot JOOQ Starter</name>
|
||||
<description>Spring Boot JOOQ Starter</description>
|
||||
<url>http://projects.spring.io/spring-boot/</url>
|
||||
<organization>
|
||||
<name>Pivotal Software, Inc.</name>
|
||||
<url>http://www.spring.io</url>
|
||||
</organization>
|
||||
<properties>
|
||||
<main.basedir>${basedir}/../..</main.basedir>
|
||||
</properties>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-jdbc</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-tx</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jooq</groupId>
|
||||
<artifactId>jooq</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
@ -0,0 +1 @@
|
||||
provides: jooq
|
Loading…
Reference in New Issue