【问题标题】:Select Database from Hibernate Grails从 Hibernate Grails 中选择数据库
【发布时间】:2020-11-23 03:55:02
【问题描述】:

我需要帮助。我正在使用 HQL,但我卡在这段代码中,我不知道如何解决它。

def deposit = Deposit.executeQuery("select terminalID,deposit,created_at from Deposit")

我得到了这样的正确结果

[[1, 1000, 2020-07-29 13:29:28.0], [0, 1, 2020-07-29 13:42:11.0], [2, 1000, 2020-07-29 13:50:08.0], [0, 1, 2020-07-29 14:03:07.0]]

但在查看页面中,由于没有此类属性,我无法调用 terminalID、deposit、created_at

如果我使用

def deposit = Deposit.executeQuery("from Deposit")

我得到了这样的错误结果 [com.dm.Bank.Deposit : ID]

[com.dm.Bank.Deposit : 2, com.dm.Bank.Deposit : 2, com.dm.Bank.Deposit : 3, com.dm.Bank.Deposit : 2]

数据库存款:数字是 auto_increment

存款结果不同

数据库:

class Deposit implements Validateable{
    String number
    String id
    String terminalID
    String startDate 
    String endDate 
    String currency
    String startBalance
    String transactionDate
    String branchCode
    String transactionType 
    String transactionAmount
    String currentBalance
    String deposit
    String transactionName
    String trailer
    String corporateId
    String accountNumber
    String created_at
    String company
    
static mapping = {
        datasource 'DBTarget'
        table 'HISTORY_MUTASI'
        number column: "Number"
        id generator: 'assigned', column: "ID"
        terminalID column: "TerminalID"
        startDate column: "StartDate"   
        endDate column: "EndDate"
        currency column: "Currency"
        startBalance column: "StartBalance"
        transactionDate column: "TransactionDate"
        branchCode column: "BranchCode" 
        transactionType column: "TransactionType"
        transactionAmount column: "TransactionAmount"
        currentBalance column: "CurrentBalance"
        deposit column: "Deposit"
        transactionName column: "TransactionName"
        trailer column: "Trailer"
        corporateId column: "CorporateId"
        accountNumber column: "AccountNumber"
        created_at column: "created_at"
        company column: "Company"
        version false
        
    }
    static constraints = {
        number unique:true,generator:"increment";
    }

【问题讨论】:

  • 为什么要对已经映射的对象执行原始 SQL 查询?为什么没有动态查找器、标准或 HQL?

标签: hibernate grails groovy hql nhibernate-mapping


【解决方案1】:

恕我直言,了解executeQuery 如何返回非常重要。

executeQuery 方法允许执行任意 HQL 查询。 HQL 查询可以返回域类实例,或者指定的数组 查询选择单个字段或计算值时的数据。 从 Grails 文档中阅读更多 executeQuery

我可以看到结果格式,您必须使用基于索引的操作。

例如,我们可以在如下视图中显示结果。

<g:each in="${deposit}" var="entry">
    <p>TerminalID: ${entry[0]} with the deposit ${entry[1]} issued at ${entry[2]}</p>
</g:each>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 2012-01-01
    • 2011-11-18
    • 1970-01-01
    • 2019-10-25
    相关资源
    最近更新 更多