Как я могу настроить столбец String для использования 'char' в качестве единицы размера вместо 'byte' в DataNucleus - PullRequest
0 голосов
/ 15 октября 2019

Я использую DataNucleus в качестве своего уровня персистентности (JDO) и вынужден использовать Oracle 11g в качестве базы данных (используя 11g XE для разработки). К сожалению, начиная с версии 11.2 семантика длины по умолчанию (NLS_LENGTH_SEMANTICS) для столбцов VARCHAR была установлена ​​на byte вместо char, что означает, что все столбцы, которые предоставляют только размер, приведут к определению типа, подобному этому:

VARCHAR2(50 byte)

вместо:

VARCHAR2(50 char)

С точки зрения Oracle, решение имеет три аспекта:

  1. объявляет единицу измерения в вашем размере (то, что я пытаюсьдостичь с помощью метаданных JDO)
  2. изменять атрибут NLS_LENGTH_SEMANTICS в каждом сеансе
  3. изменять атрибут NLS_LENGTH_SEMANTICS глобально (что, кажется, не работает с "Express Edition", я имеюя уже потратил на это целый день)

Я просматривал документацию по картографированию и постоянству, чтобы найти атрибуты метаданных, которые позволяют мне это делать. Я могу указать jdbcType, sqlType и, конечно, length для столбца. Но нет юнита.

Любая помощь будет принята с благодарностью.

...