I ask this question to show how MySQL and Hibernate work each other with Regular Expressions.
The problem:
SELECT * FROM table WHERE regexp column \'
REGEXP is treated as a keyword in MySQL. User can use REGEXP in hibernate filter by registering the keyword. Create a class 'CustomMySQL5InnoDBDialect' extending MySQL5InnoDBDialect and register the keyword as follows :
public class CustomMySQL5InnoDBDialect extends MySQL5InnoDBDialect {
public CustomMySQL5InnoDBDialect() {
super();
/* register regexp keyword */
registerKeyword("regexp");
}
}
Then change the hibernate-dialect property in persistence.xml as
User can use the regexp in hibernate filter as follows
@Filters(value = { @Filter(name="applyStudentFilter",condition="id in (select s.id from student s WHERE s.address REGEXP :addressValue)"),
})