Соответствуйте ему против регулярного выражения.
c.f. http://forums.mysql.com/read.php?60,1907,38488#msg-38488 , как заключено в кавычки ниже:
Ре: IsNumeric () пункт в MySQL??
Отправленный: kevinclark ()
Дата: 08 августа 2005 13:01
я соглашаюсь. Вот функция, которую я создал для MySQL 5:
CREATE FUNCTION IsNumeric (sIn varchar(1024)) RETURNS tinyint
RETURN sIn REGEXP '^(-|\\+){0,1}([0-9]+\\.[0-9]*|[0-9]*\\.[0-9]+|[0-9]+)
Это допускает дополнительное плюс/знак "минус" вначале, одна дополнительная десятичная точка и остальные числовые цифры.
;
Это допускает дополнительное плюс/знак "минус" вначале, одна дополнительная десятичная точка и остальные числовые цифры.
Что вам нужно сделать, чтобы ваши сопоставления работали так, как вы ожидали, - это переместить inverse = "true"
из категории .Items
в коллекцию Item.Categories
. Сделав это, вы заставите NHibernate понять, какая из сторон является владельцем ассоциации, а это будет сторона «Категория».
Если вы сделаете это, удалив объект «Категория», он удалит соответствующую запись из таблицы поиска, как вы хотите, поскольку это разрешено, потому что это сторона-владелец ассоциации.
По порядку. чтобы НЕ удалять элементы, назначенные объекту категории, который должен быть удален, вам необходимо оставить атрибут каскада следующим образом: cascade = "save-update"
.
cascade = "all"
Ваши сопоставления должны выглядеть так:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="..."
namespace="...">
<class name="Category" lazy="true">
<id name="CategoryId" unsaved-value="0">
<generator class="native" />
</id>
<property name="Name" />
<bag name="ItemCategories" generic="true" inverse="true" lazy="true" cascade="none">
<key column="CategoryId"/>
<one-to-many class="ItemCategory"/>
</bag>
<bag name="Items" table="ItemCategory" cascade="save-update" generic="true">
<key column="CategoryId"></key>
<many-to-many class="Item" column="ItemId"></many-to-many>
</bag>
</class>
</hibernate-mapping>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="..."
namespace="...">
<class name="Item" table="Item" lazy="true">
<id name="ItemId" unsaved-value="0">
<generator class="native" />
</id>
<property name="Name" />
<bag name="ItemCategories" generic="true" inverse="true" lazy="true" cascade="all-delete-orphan">
<key column="ItemId"/>
<one-to-many class="ItemCategory"/>
</bag>
<bag name="Categories" table="ItemCategory" inverse="true" cascade="save-update" generic="true">
<key column="ItemId"></key>
<many-to-many class="Category" column="CategoryId"></many-to-many>
</bag>
</class>
</hibernate-mapping>
Как указано выше, оно позволяет вам следующее:
Вы синхронизируете коллекции? Я считаю, что Hibernate ожидает от вас правильного графа объектов; если вы удалите запись из Item.Categories, я думаю, вам придется удалить ту же запись из Category.Items, чтобы две коллекции синхронизировались.