休眠 Java:未找到函数“AES_DECRYPT”; SQL 语句:
Posted
技术标签:
【中文标题】休眠 Java:未找到函数“AES_DECRYPT”; SQL 语句:【英文标题】:Hibernate Java: Function "AES_DECRYPT" not found; SQL statement: 【发布时间】:2015-09-07 06:38:40 【问题描述】:我的 mysql 版本:5.6.25
查询数据库时遇到问题。
原因:org.h2.jdbc.JdbcSQLException:找不到函数“AES_DECRYPT”; SQL语句:
型号:
@Column(nullable = false)
@ColumnTransformer(
read="AES_DECRYPT(title, SHA2('" + AESConfig.SECRET_KEY + "',512))",
write="AES_ENCRYPT(?,SHA2('" + AESConfig.SECRET_KEY + "',512))")
private String title;
这可能是什么问题?
【问题讨论】:
【参考方案1】:您应该注册 AES_DECRYPT 函数以在 hql 查询中使用它。
尝试使用这样的东西:
registerFunction("aes_encrypt", new StandardSQLFunction("aes_encrypt", Hibernate.STRING) )
registerFunction("aes_decrypt", new StandardSQLFunction("aes_decrypt", Hibernate.STRING) )
你应该扩展标准的 MySqlDialect 类
MyCustomDialect extends MySQLDialect
public MyCustomDialect ()
super();
registerFunction("MyFunction", ....); // Second argument is an implementation of SQLFunction interface
【讨论】:
谢谢。我是新来的冬眠。我可以把那个代码放在哪里? @kenicky 创建你自己的方言类。 这个方言有效吗? org.hibernate.dialect.MySQLDialect 如何使用该类?以上是关于休眠 Java:未找到函数“AES_DECRYPT”; SQL 语句:的主要内容,如果未能解决你的问题,请参考以下文章