java - 在测试中使用 HibernateDatastore 时,是什么导致域的静态映射中的字符串“默认值”导致错误?
问题描述
在创建新的 HibernateDatastore 时,更新应用程序中的测试域中的字符串默认值会导致问题。尝试访问域时出现错误
引起:org.h2.jdbc.JdbcSQLException:找不到表“PERSON”;
由于某种原因,该表根本没有被构建,但删除字符串默认值它将起作用。
领域
@ToString(includeNames=true, includePackage=false)
class Person{
EnumType type = EnumType.Human
Long age = 10
String name = "StandardName"
static mapping = {
version false
type defaultValue: EnumType.Human
age defaultValue: 10
name defaultValue: "StandardName"
}
}
单元测试
class PersonServiceSpec extends Specification implements DataTest, BuildDataTest {
@Shared
InterviewModelService interviewModelService
@Shared
HibernateDatastore hibernateDatastore
@Shared
PlatformTransactionManager transactionManager
def setupSpec() {
mockDomain Person
hibernateDatastore = new HibernateDatastore(Person)
transactionManager = hibernateDatastore.getTransactionManager()
interviewModelService = hibernateDatastore.getService(PersonService)
}
def setup() {
}
def cleanup() {
}
@Transactional
void "test criteria builder for getting interview models"() {
setup:
Person.build(name: 'steve')
when:
def x = Person.findAll()
then:
x.size() == 3
}
}
解决方案
推荐阅读
- java - Firebase Firestore 和 Dialogflow - PROTOBUF 错误
- routes - 如何路由 600 个航点?
- javascript - 调用 addEventListener() 与在 HTML 标签中添加事件 + 函数有什么区别
- django - 如何使用参数创建 Django 反向 url
- swift - 尝试使用 messageui 库发送电子邮件时出错
- facebook-opengraph - Facebook Open Graph 抓取基本 URL 而不是实际 URL
- c# - HttpClient - 最佳实践解决方法
- swift - 按翻译的属性对核心数据对象进行排序
- c++ - 如何编写析构函数以删除每个节点是包含多个数组的动态分配结构的树?
- python - 如何在 django 的一个序列化程序中加入两个相关模型