2015-12-27 7 views
0

Я установил мой постоянный компонент с этим свойством:Игнорируется значение по умолчанию в Lucee ОРМ

<cfproperty name="active" ormType="timestamp" notnull="true" dbDefault="now()" /> 

Теперь, если я сохранить объект, не определяя его значение created_at, я получаю сообщение об ошибке: not-null property references a null or transient value: User.active.

Как пропустить указание всех столбцов при создании объектов?

Спасибо!

+0

Ошибка, похоже, относится к свойству, называемому 'active', а не' created_at'. Можете ли вы опубликовать немного больше кода, чтобы уточнить, что вы пытаетесь сделать? – CfSimplicity

+0

Спасибо, вы правы, это код '', добавляя объект, который я делаю 'u = entityNew (' пользователя '); u.setEmail ([email protected]); entitySave (u); ', структура Db (Postgresql) выглядит нормально,' ALTER TABLE users ADD COLUMN активен boolean; ALTER TABLE пользователи ALTER COLUMN активны SET NOT NULL; ALTER TABLE пользователи ALTER COLUMN активны SET DEFAULT false; ' – Manaus

+0

OK, имеет больше смысла. Вы пытались использовать 'default = false', а не, или в дополнение к' dbdefault'. Это должно гарантировать, что свойство не имеет нулевого значения, когда объект сохраняется. – CfSimplicity

ответ

0

Вместо того, чтобы устанавливать значения по умолчанию в схеме базы данных, я бы определил их в свойствах вашего объекта, используя атрибут default, чтобы избежать нулевых значений.

Однако имейте в виду, что только простые и нединамические значения, такие как фиксированные строки и числа, могут быть определены как значения по умолчанию. Если вам нужно определить сложное значение, например массив или динамический, например Now(), вам необходимо установить их в методеобъекта.

component name="user" accessors=true persistent=true{ 

property name="active" ormtype="boolean" default=false; 
property name="created_at" ormtype="timestamp"; 

function init(){ 
    variables.created_at=Now(); 
    return this; 
} 

} 

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

  • Нет связанных вопросов^_^