νμ΄λ²λ€μ΄νΈλ μ¬μ© μ λ°©μΈμ μΆκ°ν΄μΌ νλ€.
registerFunction() λ©μλλ₯Ό μ¬μ©νμ¬ μ¬μ©μ μ μ ν¨μλ₯Ό λ±λ‘νλ€.import org.hibernate.dialect.MySQL5Dialect;
import org.hibernate.dialect.function.StandardSQLFunction;
import org.hibernate.type.StandardBasicTypes;
public class CustomMySQLDialect extends MySQL5Dialect {
public CustomMySQLDialect() {
super();
registerFunction("my_function", new StandardSQLFunction("my_function", StandardBasicTypes.STRING));
}
}
persistence.xml λλ νμ΄λ²λ€μ΄νΈ μ€μ νμΌμμ λ°©μΈ μ€μ μ λ³κ²½νμ¬ μλ‘μ΄ ν΄λμ€λ₯Ό μ¬μ©νλλ‘ νλ€.<persistence ...>
<persistence-unit ...>
...
<properties>
...
<property name="hibernate.dialect" value="com.example.CustomMySQLDialect"/>
...
</properties>
</persistence-unit>
</persistence>
JPQLμ΄λ Criteria APIμμ νΈμΆνλ€.
String jpql = "SELECT m FROM Member m WHERE my_function(m.name) = 'something'";
TypedQuery<Member> query = entityManager.createQuery(jpql, Member.class);
List<Member> members = query.getResultList();
select function('group_concat', i.name) from Item i