문서의 이전 판입니다!
printSchema()
를 지정해야만 schema.tableName
형태로 SQL 생성SQLTemplates mysqlTemplates = MySQLTemplates.builder().printSchema().build();
schema
개념이 없어서 코드 생성시 코드 값이 올바로 안들어간다. 따라서 Meta Class 생성시 schema name이 null로 생성된다. 아래와 같이 하면 schema 지정이 가능해진다.QUser qUser = new QUser("user_alias", "user_schema_name", "user_table_name");
MySQLQuery
같은 순수 Native SQL 용 Query 클래스를 참조하여 addFlag,addJoinFlag
등을 작성해주면 된다. 혹은 JPASQLQuery
를 상속하여 addFlag,addJoinFlag
등을 미리 구현해 둔 클래스를 만들어 사용하는 것도 방법이다.// MySQLQuery와 JPASQLQuery 를 참조해서 만든 MySQLJPASQLQuery : QueryDSL 3.x public class MySQLJPASQLQuery extends AbstractJPASQLQuery<MySQLJPASQLQuery> { private static final Joiner JOINER = Joiner.on(", "); public MySQLJPASQLQuery(EntityManager entityManager, SQLTemplates sqlTemplates) { super(entityManager, new Configuration(sqlTemplates)); } public MySQLJPASQLQuery forceIndex(String... indexes) { addJoinFlag(" force index (" + JOINER.join(indexes) + ")", JoinFlag.Position.END); return this; } public MySQLJPASQLQuery ignoreIndex(String... indexes) { addJoinFlag(" ignore index (" + JOINER.join(indexes) + ")", JoinFlag.Position.END); return this; } public MySQLJPASQLQuery useIndex(String... indexes) { addJoinFlag(" use index (" + JOINER.join(indexes) + ")", JoinFlag.Position.END); return this; } @Override public MySQLJPASQLQuery clone(EntityManager entityManager) { MySQLJPASQLQuery q = new MySQLJPASQLQuery(entityManager, configuration, queryHandler, getMetadata().clone()); q.clone(this); return q; } }