Будьте в спящем режиме: “Поле 'идентификатор' не имеет значения по умолчанию”

Если вы хотите сохранить простоту, вы можете определять границы слов, проверяя два символа за раз. Вот рабочий пример .

using namespace std;

#include 
#include 

#include 

typedef enum boundary_type_e {
    E_BOUNDARY_TYPE_ERROR = -1,
    E_BOUNDARY_TYPE_NONE,
    E_BOUNDARY_TYPE_LEFT,
    E_BOUNDARY_TYPE_RIGHT,
} boundary_type_t;

typedef struct boundary_s {
    boundary_type_t type;
    int pos;
} boundary_t;

bool is_word_char(int c) {
    return ' ' <= c && c <= '~' && !isspace(c) && c != ',';
}

boundary_t maybe_word_boundary(string str, int pos) {
    int len = str.length();
    if (pos < 0 || pos >= len) {
        return (boundary_t){.type = E_BOUNDARY_TYPE_ERROR};
    } else {
        if (pos == 0 && is_word_char(str[pos])) {
            // if the first character is word-y, we have a left boundary at the beginning
            return (boundary_t){.type = E_BOUNDARY_TYPE_LEFT, .pos = pos};
        } else if (pos == len - 1 && is_word_char(str[pos])) {
            // if the last character is word-y, we have a right boundary left of the null terminator
            return (boundary_t){.type = E_BOUNDARY_TYPE_RIGHT, .pos = pos + 1};
        } else if (!is_word_char(str[pos]) && is_word_char(str[pos + 1])) {
            // if we have a delimiter followed by a word char, we have a left boundary left of the word char
            return (boundary_t){.type = E_BOUNDARY_TYPE_LEFT, .pos = pos + 1};
        } else if (is_word_char(str[pos]) && !is_word_char(str[pos + 1])) {
            // if we have a word char followed by a delimiter, we have a right boundary right of the word char
            return (boundary_t){.type = E_BOUNDARY_TYPE_RIGHT, .pos = pos + 1};
        }
        return (boundary_t){.type = E_BOUNDARY_TYPE_NONE};
    }
}

int main() {
    string str;
    string ins_left("");
    string ins_right("");
    getline(cin, str);

    // can't use length for the loop condition without recalculating it all the time
    for (int i = 0; str[i] != '\0'; i++) {
        boundary_t boundary = maybe_word_boundary(str, i);
        if (boundary.type == E_BOUNDARY_TYPE_LEFT) {
            str.insert(boundary.pos, ins_left);
            i += ins_left.length();
        } else if (boundary.type == E_BOUNDARY_TYPE_RIGHT) {
            str.insert(boundary.pos, ins_right);
            i += ins_right.length();
        }
    }
}

Было бы лучше использовать enum class, но я забыл обозначения. Вы также можете скопировать в буфер вместо генерации новой строки на месте, я просто пытался сохранить ее простотой. Не стесняйтесь расширять его до стиля C ++, основанного на классах. Чтобы получить желаемый результат, сначала удалите пробелы и добавьте пробелы в ins_left и ins_right.

115
задан André Chalella 10 June 2014 в 22:11
поделиться

4 ответа

Иногда изменения, внесенные в модель или в ORM, могут неточно отражаться в базе данных даже после выполнения SchemaUpdate .

Если ошибка действительно не имеет разумного объяснения, попробуйте воссоздать базу данных (или, по крайней мере, создание новой) и построение ее с помощью SchemaExport .

100
ответ дан 24 November 2019 в 02:26
поделиться

Когда Ваше поле не nullable, оно требует, чтобы значение по умолчанию было указано на создании таблицы. Воссоздайте таблицу с AUTO_INCREMENT, правильно инициализированным, таким образом, DB не потребует значения по умолчанию, так как это генерирует его отдельно и никогда не помещать ПУСТОЙ УКАЗАТЕЛЬ там.

CREATE TABLE Persons (
Personid int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
PRIMARY KEY (Personid)

);

https://www.w3schools.com/sql/sql_autoincrement.asp

0
ответ дан 24 November 2019 в 02:26
поделиться

Взгляните на стратегию GeneratedValue . Обычно это выглядит примерно так:

@GeneratedValue(strategy=GenerationType.IDENTITY)
10
ответ дан 24 November 2019 в 02:26
поделиться

Добавьте метод hashCode () в свой класс Entity Bean и повторите попытку

-1
ответ дан 24 November 2019 в 02:26
поделиться
Другие вопросы по тегам:

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