我正在使用 Grails 3 和Spring Security Rest插件创建REST API 我使用 MySQL 作为我的后端 但是每当我尝试向/ api / login端点发送请求时,我总是会收到401错误 因此,我假设我的Domain类的布尔属性未在MySQL数据库中正确映射。因此,Spring Security正在抛出401错误 简而言之,我想创建以下自定义方言
package com.yourcompany.yourapp
import java.sql.Types
import org.hibernate.dialect.MySQL5InnoDBDialect
class MyDialect extends MySQL5InnoDBDialect {
public MyDialect() {
registerColumnType(Types.BIT, "boolean")
}
}
但我很困惑如何做到这一点。我应该创建一个新的Java文件还是Groovy文件?我应该在grails app目录中的哪个目录中创建自定义方言?
此外,我需要知道我应该在 application.yml 文件中进行哪些更改,以便使用我的自定义方言。
非常感谢任何形式的帮助。谢谢!
答案 0 :(得分:0)
package my.package
import org.hibernate.dialect.MySQL5InnoDBDialect
class ImprovedMySQLDialect extends MySQL5InnoDBDialect {
@Override
public String getDropSequenceString(String sequenceName) {
// Adding the "if exists" clause to avoid warnings
return "drop sequence if exists " + sequenceName;
}
@Override
public boolean dropConstraints() {
// We don't need to drop constraints before dropping tables, that just leads to error
// messages about missing tables when we don't have a schema in the database
return false;
}
}
并在您的application.yml
中dataSources:
dataSource:
#logSql: true
#formatSql: true
pooled: true
jmxExport: true
driverClassName: com.mysql.jdbc.Driver
#dialect: org.hibernate.dialect.MySQL5InnoDBDialect
dialect: my.package.ImprovedMySQLDialect
通常,您会将您的ImprovedDialect文件放在src/main/groovy/my/package/ImprovedMySQLDialect.groovy
内的grails 2中src/main
为src/groovy
您将成为数据库模型的域类或对象置于其中 - >的grails-app /结构域
所有助手类都在src / main(java groovy)
中你的意思是那些盒子里面有0101垃圾吗?我不认为它会给你X / Y或A勾选框或数字值0/1它会给你Boolean
或者将您的布尔值声明为Byte
或byte
byte privacy
boolean main=false
static mapping = {
cache true
privacy(sqlType: 'tinyint(2)')
main(sqlType: 'bit(1)'
}
是您尝试做的一些替代方案......
有效的字节或布尔值可以是3个状态null或false或true,你可以用布尔声明打开或关闭的3种方式来处理它。