#30 jpa basic: jpql - function
This commit is contained in:
78
hello-jpa/src/main/java/com/hello/jpa/query/Function.java
Normal file
78
hello-jpa/src/main/java/com/hello/jpa/query/Function.java
Normal file
@@ -0,0 +1,78 @@
|
||||
package com.hello.jpa.query;
|
||||
|
||||
import com.hello.jpa.query.entity.Member;
|
||||
import com.hello.jpa.query.entity.MemberType;
|
||||
import com.hello.jpa.query.entity.Team;
|
||||
|
||||
import javax.persistence.EntityManager;
|
||||
import javax.persistence.EntityManagerFactory;
|
||||
import javax.persistence.EntityTransaction;
|
||||
import javax.persistence.Persistence;
|
||||
import java.util.List;
|
||||
|
||||
public class Function {
|
||||
|
||||
public static void main(String[] args) {
|
||||
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
|
||||
|
||||
EntityManager em = emf.createEntityManager();
|
||||
|
||||
EntityTransaction tx = em.getTransaction();
|
||||
tx.begin();
|
||||
|
||||
try {
|
||||
Team team = new Team();
|
||||
team.setName("team");
|
||||
em.persist(team);
|
||||
|
||||
Member member = new Member();
|
||||
member.setName("member");
|
||||
member.setAge(10);
|
||||
member.setTeam(team);
|
||||
member.setMemberType(MemberType.ADMIN);
|
||||
|
||||
em.persist(member);
|
||||
|
||||
Member member2 = new Member();
|
||||
member2.setName("hello world");
|
||||
member2.setAge(70);
|
||||
member2.setTeam(team);
|
||||
member2.setMemberType(MemberType.USER);
|
||||
|
||||
em.persist(member2);
|
||||
|
||||
em.flush();
|
||||
em.clear();
|
||||
|
||||
// String query = "select concat('a', 'b') from Member m";
|
||||
// String query = "select substring(m.name, 2, 3) from Member m";
|
||||
// String query = "select locate('he', m.name) from Member m";
|
||||
// String query = "select size(t.members) from Team t";
|
||||
// String query = "select function('group_concat', m.name) from Member m";
|
||||
String query = "select group_concat(m.name) from Member m";
|
||||
|
||||
List<String> result = em.createQuery(
|
||||
query,
|
||||
String.class
|
||||
)
|
||||
.getResultList();
|
||||
|
||||
// List<Integer> result = em.createQuery(
|
||||
// query,
|
||||
// Integer.class
|
||||
// )
|
||||
// .getResultList();
|
||||
|
||||
result.forEach(System.out::println);
|
||||
|
||||
tx.commit();
|
||||
} catch (Exception e) {
|
||||
tx.rollback();
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
em.close();
|
||||
}
|
||||
|
||||
emf.close();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.hello.jpa.query.dialect;
|
||||
|
||||
import org.hibernate.dialect.H2Dialect;
|
||||
import org.hibernate.dialect.function.StandardSQLFunction;
|
||||
import org.hibernate.type.StandardBasicTypes;
|
||||
|
||||
public class MyH2Dialect extends H2Dialect {
|
||||
|
||||
public MyH2Dialect() {
|
||||
registerFunction("group_concat", new StandardSQLFunction("group_concat", StandardBasicTypes.STRING));
|
||||
}
|
||||
}
|
||||
@@ -49,7 +49,7 @@
|
||||
<property name="javax.persistence.jdbc.password" value=""/>
|
||||
<property name="javax.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/~/test"/>
|
||||
<!-- <property name="javax.persistence.jdbc.url" value="jdbc:h2:mem:~/testdb"/>-->
|
||||
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
|
||||
<property name="hibernate.dialect" value="com.hello.jpa.query.dialect.MyH2Dialect"/>
|
||||
|
||||
<!-- 옵션 -->
|
||||
<property name="hibernate.show_sql" value="true"/>
|
||||
|
||||
Reference in New Issue
Block a user