动态降低套管柱值

yebdmbv4  于 2021-06-23  发布在  Mysql
关注(0)|答案(2)|浏览(232)

我有一个mysql脚本,我想把一个列值转换成总是小写的。我不想使用触发器。当我运行hibernate代码并在db中填充数据时,我希望列值总是小写的。
有没有什么方法可以在创建表的过程中使用mysql的lower()函数,这样每次插入数据时都是小写的?
我看到很多小写的例子,但都是更新操作。

dgsult0t

dgsult0t1#

假设你有这样一个实体:

@Entity
@EntityListeners(MyEntityListener.class)
public class MyEntity {
    private String name;
    ...
}

整个听众喜欢:

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
    }
}
brvekthn

brvekthn2#

您可以使用hibernate拦截器(参见这里的示例)
在方法中

public boolean onSave(Object entity,Serializable id,
    Object[] state,String[] propertyNames,Type[] types)

您可以检查实体是否是要小写的类的示例,并用小写值更新必要的字段。
或者只是在实体中扩展setters,以便在调用时转换为小写。

相关问题