Использование представлений базы данных в Grails

#grails #grails-domain-class

#grails #grails-domain-class

Вопрос:

Я создал представление в моей базе данных Postgres. В grails создайте класс следующим образом:

 class ViewDeudce{

    BigDecimal stateid
    BigDecimal motivid

    static mapping = {
        id column:"id", sqlType:"numeric"
        table 'viewDeudce'
        version false
    }
}
  

Идентификатор представления — это «номер клиента». Если у меня есть класс «Client», при выполнении этого я не смогу связать его?:

 class Clients implements Serializable {

    String name
    BigDecimal document
    String brutos

    ViewDeudce viewDeudce

static mapping = {
        id column:"idclient", sqlType:"numeric", generator: 'assigned'
        ViewDeudce column: "id", sqlType:"numeric"
        version false
    }
  

Насколько я понимаю, я не указываю классу Client, чтобы он связывался с классом ‘ViewDeudce’ через атрибут id?

Потому что при перезапуске сервера он не запускается и выдает следующую ошибку:

 Caused by BeanCreationException: Error creating bean with name '$ primaryTransactionManager': Can not resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ' sessionFactory ': Invocation of init method failed; nested exception is org.hibernate.HibernateException: Missing column: id in public.clients
- >> 266 | run in java.util.concurrent.FutureTask
  

Спасибо!

Ответ №1:

возможно, попробуйте использовать id для reated, а не grails.domain class

 class Clients implements Serializable {

    String name
    BigDecimal document
    String brutos

    //ViewDeudce viewDeudce
    //!!change here!!
    Long viewDeudceId

static mapping = {
        id column:"idclient", sqlType:"numeric", generator: 'assigned'
        ViewDeudce column: "id", sqlType:"numeric"
        version false
    }
  

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

1. Здравствуйте! Спасибо за ответ, мне нужно иметь возможность входить с клиента, сделайте что-то вроде этого: ‘client.viewDeuce’, потому что представление долга включает в себя общий долг клиента. Все это является частью критерия GRAN

2. ViewDeudce(представление) и Client (таблица) Два класса имеют конструктивные отношения в базе данных. вам не нужно создавать их в grails. после изменения клиента (обновления или удаления) ViewDeudce тоже изменился.