Как разрешить отсутствие типа данных для ошибки узла в режиме гибернации

#grails

#grails

Вопрос:

У меня есть table vehicle, я написал запрос, как показано ниже

Vehicle.ExecuteQuery («выберите audio_system из Vehicle»), но я получаю сообщение об ошибке

ОШИБКА groovy.grails.web.errors.GrailsExceptionResolver ### Нет типа данных для узла: org.hibernate.hql.ast.tree.IdentNode -[IDENT] IdentNode: ‘audio_system’ {originalText=audio_system}

java.lang.Исключение IllegalStateException: нет типа данных для узла: org.hibernate.hql.ast.tree.IdentNode -[IDENT] IdentNode: ‘audio_system’ {originalText=audio_system}

Исходный код класса vehicle выглядит следующим образом

 class Vehicle {


    String vehicleSticker
    String regNumber //plate
    String chasisNumber
    String engineNumber
    Integer yearOfManufacture
    Date purchasedOn

    Boolean audioSystem
    Boolean videoSystem
    Boolean mobileCharger
    Boolean laptopCharger

    //Vehicle compliance
    Date pucExpiry
    Date pucTestingOn
    Date taxTokenIssueDate
    Date taxTokenExpiryDate
    Date insuranceIssueDate
    Date insuranceExpiryDate
    Date permitIssueDate
    Date permitExpiryDate
    Date fitnessCertificateIssueDate
    Date fitnessCertificateExpiryDate
    Double odoReadingWhenServiceDone
    Double dueOddReading

    VendorRole vendor

    VehicleType vehicleType
    //RegistrationCertificate registrationCertificate

    static mapping = {
        //registrationCertificate(cascade:'all')

    }

    static constraints = {
        yearOfManufacture(nullable:true)
        regNumber(nullable:false,unique: true)
        chasisNumber(blank:true)
        engineNumber(blank:true)
        purchasedOn(nullable:true)
        taxTokenIssueDate(nullable:true)
        taxTokenExpiryDate(nullable:true)

        insuranceIssueDate(nullable:true)
        insuranceExpiryDate(nullable:true)
        permitIssueDate(nullable:true)
        permitExpiryDate(nullable:true)
        fitnessCertificateIssueDate(nullable:true)
        fitnessCertificateExpiryDate(nullable:true)
        odoReadingWhenServiceDone(nullable:true)

        dueOddReading(nullable:true)
        pucExpiry(nullable:true)
        pucTestingOn(nullable:true)

        vendor(nullable:true)


    }

    public String toString() {
        "${vehicleSticker} ${regNumber?'| '  regNumber:''}"
    }
  

Комментарии:

1. Можете ли вы предоставить полный исходный код для клиента и транспортного средства?

2. даже когда я пытаюсь получить любое поле, отличное от id, я получаю ошибку

Ответ №1:

Это должно быть

 Vehicle.executeQuery("select audioSystem from Vehicle ")
  

Это запрос HQL, и вы используете имена классов и полей, а не имена таблиц и столбцов.

Ответ №2:

Убедитесь, что у вас есть поле, указанное этим именем в Entity