Я новичок в Hibernate.Надеюсь, вы, ребята, можете помочь мне отладить ниже ошибки, которая действительно сводит меня с ума.
Я получил таблицу с именем CONTENT_WORKGROUP, которая будет сопоставлена с другой таблицей с именем CONTENT_WORKGROUP_ROLE.Ниже приведены структура таблицы и примеры данных:
CONTENT_WORKGROUP
- CM_WORKGROUP_ID NUMBER (15,0)
- WORKGROUP_ID NUMBER (15,0)
- ROLE_ID VARCHAR2 (20 байт)
CONTENT_WORKGROUP_ROLE
- CM_WORKGROUP_ROLE_ID НОМЕР (15,0)
- ROLE_ID VARCHAR2 (20 байт 10 * * * * 10 * 20* FUNCTION_ID VARCHAR2 (40 байт)
P / S: одна рабочая группа пользователя может иметь несколько ролей (создатель, администратор, утверждающий).Функцию (Добавить, Изменить, Удалить), которую может выполнять эта рабочая группа, можно запросить по адресу CONTENT_WORKGROUP_ROLE.
Пример данных:
CONTENT_WORKGROUP
CM_WORKGROUP_ID WORKGROUP_ID ROLE_ID1 136 Создатель2 137 Администратор3 136 Администратор
CONTENT_WORKGROUP_ROLE
CM_WORKGROUP_ROLE_ID ROLE_ID FUNCTION_ID
1 Копия создателя2 Создатель Править3 Создатель Удалить4 Создатель Добавить5 Администратор Править6 Администратор утверждает7 Администратор отклонить
Тем не менее, я получаю сообщение об ошибке, когда получаю удержание SET ContentWorkgroupRole определенной рабочей группой.
[23.11.10 15: 28: 56: 053 SGT] 00000039 SystemOut O [23/11/2010 15: 28: 56.053] ОШИБКА JDBCExceptionReporter - ORA-01722: недопустимый номер
[23.11.10 15: 28: 56: 100 SGT] 00000039 ServletWrappe E SRVE0068E: Вышло исключительное исключениеодин из сервисных методов сервлета: действие.Исключительное исключение: javax.servlet.ServletException: не удалось инициализировать коллекцию: [corp.celcom.next.infochannel.model.ContentWorkgroup.contentWorkgroupRole # 1]
Ниже приведен файл сопоставления моего спящего режима: ContentWorkgroup.hbm.xml
<hibernate-mapping>
<class name="corp.celcom.next.infochannel.model.ContentWorkgroup" table="CM_WORKGROUP" >
<id name="cmWorkgroupId" type="long">
<column name="CM_WORKGROUP_ID" precision="15" scale="0" />
CM_WORKGROUP CM_WORKGROUP_ID
ContentWorkgroupRole.hbm.xml
<hibernate-mapping>
<class name="corp.celcom.next.infochannel.model.ContentWorkgroupRole" table="CM_WORKGROUP_ROLE" >
<id name="cmWorkgroupRoleId" type="long">
CM_WORKGROUP_ROLE_ID CM_WORKGROUP_ROLE * * * * * * * * * * * ** В моем классе ACTION вышеупомянутая ошибка произошла в этой строке: Iterator iter = cw.getContentWorkgroupRole (). Iterator ();
for (ContentWorkgroup cw: contentWorkgroupList) { Iterator iter = cw.getContentWorkgroupRole (). Iterator ();
while (iter.hasNext()) {
ContentWorkgroupRole role = (ContentWorkgroupRole) iter.next();
if (role.getFunctionId().equalsIgnoreCase(Constant.ADD))
myForm.setAllowAdd (true);if (role.getFunctionId (). equalsIgnoreCase (Constant.EDIT)) myForm.setAllowEdit (true);if (role.getFunctionId (). equalsIgnoreCase (Constant.DELETE)) myForm.setAllowDelete (true);}}
Странная часть - когда я меняю ROLE_ID на Integer / Long (т.е. 1-Creator, 2-Administrator), вместо использования String, он работает отлично!Я не мог понять, почему и в чем проблема с моим кодом.
Спасибо за помощь.Мне потребовался 1 день, чтобы справиться с этой ошибкой.Спасибо!