У меня странная проблема с ColdFusion ORM, он пытается вставить значение в мой столбец идентификаторов после создания EntityNew()
, а затем EntitySave()
. Вот конкретное определение свойства:
property name='StaffAdminID'
fieldType='id'
type='numeric'
ormType='integer'
generator='identity'
setter=false
insert=false
update=false;
А вот код создания новой записи:
transaction {
LOCAL.staffAdmin = EntityNew('StaffAdmins');
LOCAL.staffAdmin.setYear( REQUEST.user.getYear() );
LOCAL.staffAdmin.setStaff( LOCAL.staff );
LOCAL.staffAdmin.setAdmin( LOCAL.admin );
LOCAL.staffAdmin.setAddedOn( Now() );
LOCAL.staffAdmin.setAddedBy( SESSION.username );
LOCAL.staffAdmin.setAddedID( REQUEST.user.getStaffID() );
EntitySave( LOCAL.staffAdmin );
}
А вот журнал Hibernate:
2015-07-24 21:49:20,108 [ajp-bio-8014-exec-6] Hibernate DEBUG org.hibernate.SQL -
insert
into
StaffAdmins
(AddedOn, AddedBy, AddedID, YearID, StaffEnrollmentID, AdminEnrollmentID, StaffAdminID, StaffID, AdminID)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?)
Что приводит к следующей ошибке:
coldfusion.orm.hibernate.HibernateSessionException:
[Macromedia][SQLServer JDBC Driver][SQLServer]
Cannot insert explicit value for identity column in
table 'StaffAdmins' when IDENTITY_INSERT is set to OFF
Как видите, он пытается вставить в столбец StaffAdminID
то, что я предполагаю, это null
. Я не уверен, что происходит, я даже пытался установить dynamicInsert=true
в компоненте. Любые идеи будут отличными! Спасибо
QueryExecute()
, чтобы по крайней мере получить запись в базу данных, а затем получить вставленную запись изresult.generatedKey
. (вздох) Это хакерски, но работает... - person Panman   schedule 28.07.2015