Проблемы Hiberate, jdbc IDENTITY_INSERT установлен на ПРОЧЬ

Используя типы, определенные здесь в качестве примера , мы можем создать условный тип, в котором, если поле является обязательным, тип field будет иметь тип { required : true } или {} в противном случае:

[ 110]

Примечание Это будет проверять на необязательность (модификатор ?), оно не будет проверять на обнуляемость (| null | undefined) в зависимости от вашего варианта использования, это может или не может быть важным. [1115 ]

Также может представлять интерес этот ответ , который имеет тест для модификатора readonly. Используя его, вы также можете добавить поле isReadonly:

type IfEquals =
    (() => T extends X ? 1 : 2) extends
(() => T extends Y ? 1 : 2) ? A : B;

type DomainDefinition = {
    fields?: {
        [K in keyof F]:
        ({} extends { [P in K]: F[P] } ? {} : { required: true })
        & IfEquals<{ [P in K]: F[P] }, { -readonly [P in K]: F[P] }, {}, { isReadonly: true }>
    },
    methods?: { [K in keyof M]: M[K] & Function },
}

type User = {
    id: string,
    readonly name?: string
}

function createDomain(o: DomainDefinition) {
    return o;
}

export const User = createDomain({
    fields: {
        id: { required: true },
        name: { isReadonly: true },
    },
});

Если вы хотите отфильтровать некоторые свойства, например функции, вам придется заменить все вхождения F на отфильтрованные [ 1111]. Чтобы упростить его, просто определите псевдоним дополнительного типа:

type NonFunctionPropertyNames = { [K in keyof T]: T[K] extends Function ? never : K }[keyof T];
type DomainPropertyHelper = {
  [K in keyof F]: ({} extends { [P in K]: F[K] } ? {} : { required: true }) & {} // Intersect with other properties as necessary
}; 
type DomainDefinition = {
    fields?: DomainPropertyHelper>>,
    methods?: { [K in keyof M]: M[K] & Function },
}

9
задан James McMahon 20 January 2009 в 16:36
поделиться

1 ответ

Вы не можете вставить в столбец идентификационных данных в SQL Server, если "IDENTITY_INSERT" не установлен на "НА". Так как Ваш класс генератора "присвоен", Будьте в спящем режиме, предполагает, что Вы устанавливаете явное значение для "идентификатора" в Java прежде, чем сохранить объект и которые В спящем режиме, может непосредственно вставить значение в базу данных. Вы должны также:

  1. Выберите другой класс генератора, такой как "собственный компонент"
  2. Набор IDENTITY_INSERT к "НА"
9
ответ дан 4 December 2019 в 15:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: