【问题标题】:Is it possible to use Native SQL queries using micronaut hibernate-gorm?是否可以使用 micronaut hibernate-gorm 使用 Native SQL 查询?
【发布时间】:2020-05-14 01:49:13
【问题描述】:

我使用 hibernate-gorm 创建了 micronaut 项目,它为我提供了 GORM 和 Groovy 功能​​,但是当它没有 groovy.sql.Sql 类并且如果我注入 DataSource 时,它​​也不起作用。是否可以将原生 SQL 查询与 micronaut hiberate-gorm 一起使用?

【问题讨论】:

    标签: sql hibernate grails-orm micronaut


    【解决方案1】:

    是的,这是可能的。看例子:

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

    【讨论】:

      【解决方案2】:

      我知道休眠中有一个 SQLQuery 方法可以针对数据库引擎运行本机查询。你试过了吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-28
        • 2011-02-12
        • 2017-08-14
        • 2023-03-17
        • 1970-01-01
        • 1970-01-01
        • 2011-12-21
        • 2019-01-01
        相关资源
        最近更新 更多