我使用hibernate-gorm创建了micronaut项目,它给了我GORM和Groovy功能,但是当它没有groovy.sql.Sql类,如果我注入DataSource,那么它也不能工作。是否可以用micronaut hiberate-gorm来使用本地SQL查询?
是的,这是可能的。请看这个例子。
import grails.gorm.annotation.Entity
import grails.gorm.hibernate.HibernateEntity
@Entity
class Planet implements HibernateEntity<Planet> {
String name
}
在这种情况下,重要的是要实现 HibernateEntity
然后你就会 findWithSql
方法可用,如下面使用Spock框架实现的单元测试中所示。
import grails.gorm.transactions.Transactional
import io.micronaut.test.annotation.MicronautTest
import spock.lang.Specification
@MicronautTest
class PlanetSpec extends Specification {
@Transactional
void 'Planet is found when using native query'() {
given:
new Planet(name: 'Mars').save()
new Planet(name: 'Earth').save(flush: true)
when:
def actual = Planet.findWithSql("select * from planet p where p.name = 'Mars'")
then:
actual.name == 'Mars'
}
}
我知道hibernate中有一个SQLQuery方法 可以对数据库引擎进行本地查询,你试过吗?