我有一个mysql脚本,我想将列值始终转换为小写。我不想使用触发器。当我运行休眠代码并将数据填充到DB中时,我希望列值始终小写。
在创建表期间,有什么方法可以使用mysql的Lower()函数,以便每次插入数据时都使用小写字母吗?
我看到了很多小写的例子,但都是更新操作。
答案 0 :(得分:1)
您可以使用Hibernate拦截器(请参阅example here)
在方法中
public boolean onSave(Object entity,Serializable id,
Object[] state,String[] propertyNames,Type[] types)
您可以检查实体是否是要小写的类的实例,并使用小写的值更新必要的字段。
或者只是在实体中扩展setter以在调用时转换为小写字母。
答案 1 :(得分:1)
假设您有一个类似的实体:
@Entity
@EntityListeners(MyEntityListener.class)
public class MyEntity {
private String name;
...
}
和EntityListener一样:
import javax.persistence.PrePersist;
public class MyEntityListener {
@PrePersist
public void entityPrePersist(MyEntity obj) {
if (obj != null && obj.getName() != null) {
obj.setName(obj.getName().toLowerCase());
}
// ... same to other properties
}
}