2016-12-05 1 views
1

У меня проблема с определением стратегии сопряжения при использовании плагина nu.studer gradle.Jooq с градиентом с использованием плагина nu.studer :: как определить стратегии сопряжения внутри build.gradle

Я пытался что-то вроде:

generator { 
    strategy { 
     matchers { 
      tables { 
       table { 
        pojoClass { 
         transform = 'PASCAL' 
           expression = '$0_POJO' 
        } 
       } 
      } 
     } 
    } 
} 

, но когда я пытаюсь запустить сборку, я получаю ошибку:

Не удалось завершить выполнение задачи для ': generateSampleJooqSchemaSource.

javax.xml.bind.MarshalException - with linked exception: [org.xml.sax.SAXParseException; lineNumber: 0; columnNumber: 0; cvc-complex-type.2.4.d: Invalid content was found starting with element 'matchers'. No child element is expected at this point.]

Имейте в виду, что при использовании файла .xml для определения стратегий Сличитель как это:

<strategy> 
    <matchers> 
    <tables> 
     <table> 
     <pojoClass> 
      <transform>PASCAL</transform> 
      <expression>$0_POJO</expression> 
     </pojoClass> 
     </table> 
    </tables>    
    </matchers> 
</strategy> 

все в порядке.

Может ли кто-нибудь помочь и объяснить, что я делаю неправильно? Является ли синтаксис для определения правил сопоставления внутри структуры градации отличным от того, что я пробовал? Поскольку я не могу найти примеров для этого - ни документации по этому поводу.

Большое спасибо.

С наилучшими пожеланиями, Марко

+0

Для записи для будущих посетителей это также было записано как [проблема GitHub] (https://github.com/etiennestuder/gradle-jooq-plugin/issues/28) и в качестве [группы пользователей jOOQ E -Mail] (https://groups.google.com/forum/#!msg/jooq-user/CdzTFyWdY3M/gsEadEvICgAJ) –

ответ

1

При использовании matchers, имя должно быть явно задано нулевое значение, как это:

strategy { 
    name = null 
    matchers { 
     tables { 
     table { 
      pojoClass { 
       transform = 'PASCAL' 
       expression = '\$0_POJO' 
      } 
     } 
     } 
    } 
} 

Этот плагин потребляет классы JAXB сгенерированные от этого XSD. Имя элемента Strategy имеет значение по умолчанию, и это проблема, поскольку является частью элемента выбора XSD, то есть может присутствовать только один элемент. Это единственный элемент выбора во всем XSD, поэтому это обходное решение нужно применять только здесь.

Это задокументировано here и выполнено автоматическое испытание here.

Смежные вопросы