Выберите базу данных из Hibernate Grails - PullRequest
0 голосов
/ 03 августа 2020

Мне нужна помощь. Я использую 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]

enter image description here

DB Deposit : Number is 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";
    }

1 Ответ

0 голосов
/ 07 августа 2020

IMHO, очень важно понимать, как возвращается executeQuery.

Метод executeQuery позволяет выполнять произвольные запросы HQL. Запросы HQL могут возвращать экземпляры классов домена или массивы указанных данных, когда запрос выбирает отдельные поля или вычисляемые значения. Подробнее executeQuery из документации Grails.

Как я вижу формат результата, вы должны использовать операции на основе индекса.

Например, мы можем отобразите результат в виде, как показано ниже.

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