// Path: spring-data-jooq/src/main/java/com/mscharhag/springjooq/entity/User.java
// @Entity
// public class User {
// 
// 	@Id
// 	@GeneratedValue
// 	private Long id;
// 
// 	private String name;
// 	private String email;
// 
// 	@OneToMany
// 	private List<Order> orders;
// 
// 	public String getName() {
// 		return name;
// 	}
// 
// 	@Column(name = "name")
// 	public void setName(String name) {
// 		this.name = name;
// 	}
// 
// 	public String getEmail() {
// 		return email;
// 	}
// 
// 	@Column(name = "email")
// 	public void setEmail(String email) {
// 		this.email = email;
// 	}
// 
// 	public Long getId() {
// 		return id;
// 	}
// 	@Column(name = "id")
// 	public void setId(Long id) {
// 		this.id = id;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return "User{" +
// 				"id=" + id +
// 				", name='" + name + '\'' +
// 				", email='" + email + '\'' +
// 				'}';
// 	}
// }
// 
// Path: spring-data-jooq/src/main/java/com/mscharhag/springjooq/jooq/JooqRepositoryBean.java
// public class JooqRepositoryBean<T extends Repository<S, ID>, S, ID extends Serializable>
// 		extends JpaRepositoryFactoryBean<T, S, ID> {
// 
// 	@Autowired
// 	private DSLContext jooq;
// 
// 	protected RepositoryFactorySupport createRepositoryFactory(EntityManager entityManager) {
// 		return new JooqJpaRepositoryFactory(entityManager, jooq);
// 	}
// }
// 
// Path: spring-data-jooq/src/main/java/com/mscharhag/springjooq/repository/UserRepository.java
// @Repository
// public interface UserRepository extends JpaRepository<User, Long>, JooqQueryExecutor<User> {
// 
// 	User findUserByName(String name);
// }


import com.mscharhag.springjooq.entity.User;
import com.mscharhag.springjooq.jooq.JooqRepositoryBean;
import com.mscharhag.springjooq.repository.UserRepository;
import org.apache.commons.dbcp.BasicDataSource;
import org.jooq.*;
import org.jooq.impl.*;
import org.springframework.beans.factory.annotation.Autowire;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean;
import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import javax.persistence.EntityManagerFactory;
import javax.sql.DataSource;
import java.sql.SQLException;
package com.mscharhag.springjooq;



@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application {

	@Bean
	public DataSource dataSource() {
// Path: spring-data-jooq/src/main/java/com/mscharhag/springjooq/entity/User.java
// @Entity
// public class User {
// 
// 	@Id
// 	@GeneratedValue
// 	private Long id;
// 
// 	private String name;
// 	private String email;
// 
// 	@OneToMany
// 	private List<Order> orders;
// 
// 	public String getName() {
// 		return name;
// 	}
// 
// 	@Column(name = "name")
// 	public void setName(String name) {
// 		this.name = name;
// 	}
// 
// 	public String getEmail() {
// 		return email;
// 	}
// 
// 	@Column(name = "email")
// 	public void setEmail(String email) {
// 		this.email = email;
// 	}
// 
// 	public Long getId() {
// 		return id;
// 	}
// 	@Column(name = "id")
// 	public void setId(Long id) {
// 		this.id = id;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return "User{" +
// 				"id=" + id +
// 				", name='" + name + '\'' +
// 				", email='" + email + '\'' +
// 				'}';
// 	}
// }
// 
// Path: spring-data-jooq/src/main/java/com/mscharhag/springjooq/jooq/JooqRepositoryBean.java
// public class JooqRepositoryBean<T extends Repository<S, ID>, S, ID extends Serializable>
// 		extends JpaRepositoryFactoryBean<T, S, ID> {
// 
// 	@Autowired
// 	private DSLContext jooq;
// 
// 	protected RepositoryFactorySupport createRepositoryFactory(EntityManager entityManager) {
// 		return new JooqJpaRepositoryFactory(entityManager, jooq);
// 	}
// }
// 
// Path: spring-data-jooq/src/main/java/com/mscharhag/springjooq/repository/UserRepository.java
// @Repository
// public interface UserRepository extends JpaRepository<User, Long>, JooqQueryExecutor<User> {
// 
// 	User findUserByName(String name);
// }


// Path: spring-data-jooq/src/main/java/com/mscharhag/springjooq/Application.java
import com.mscharhag.springjooq.entity.User;
import com.mscharhag.springjooq.jooq.JooqRepositoryBean;
import com.mscharhag.springjooq.repository.UserRepository;
import org.apache.commons.dbcp.BasicDataSource;
import org.jooq.*;
import org.jooq.impl.*;
import org.springframework.beans.factory.annotation.Autowire;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean;
import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import javax.persistence.EntityManagerFactory;
import javax.sql.DataSource;
import java.sql.SQLException;

package com.mscharhag.springjooq;



@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application {

	@Bean
	public DataSource dataSource() {
		BasicDataSource dataSource = new BasicDataSource();