动态降低套管柱值

时间:2018-08-14 08:06:00

标签: mysql hibernate

我有一个mysql脚本,我想将列值始终转换为小写。我不想使用触发器。当我运行休眠代码并将数据填充到DB中时,我希望列值始终小写。

在创建表期间,有什么方法可以使用mysql的Lower()函数,以便每次插入数据时都使用小写字母吗?

我看到了很多小写的例子,但都是更新操作。

2 个答案:

答案 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
    }
}