Попробуйте:
import * as initialActions from './actions/intial';
import * as updateActions from './actions/update';
const actions = Object.assign({}, initialActions.default, updateActions.default);
Я использую
public IList<T> GetByExample<T>(T exampleInstance)
{
return _session.CreateCriteria(typeof(T))
.Add(Example.Create(exampleInstance))
.List<T>();
}
public void InsertOrUpdate<T>(T target)
{
ITransaction transaction = _session.BeginTransaction();
try
{
var res=GetByExample<T>(target);
if( res!=null && res.Count>0 )
_session.SaveOrUpdate(target);
else
_session.Save(target);
transaction.Commit();
}
catch (Exception)
{
transaction.Rollback();
throw;
}
finally
{
transaction.Dispose();
}
}
но метод FindByExample возвращает все объекты одинаково не объекты с точным идентификатором, что Вы предлагаете? так как у меня есть только объект как параметр, у меня нет доступа к его определенному полю ID, таким образом, я не могу использовать session.get(Object.class(), id);
Как правило, NHibernate может полагаться на несохранять-значение, чтобы определить, должно ли это вставить или создать объект. Однако, так как Вы присваиваете идентификатор к NHibernate, похоже, что Ваш объект был уже сохранен. Поэтому необходимо полагаться на управление версиями объект позволить NHibernate знать, что это - новый объект. Посмотрите следующую ссылку для того, как присвоить версию Вашему объекту:
Можно сделать
Obj j = session.get(Object.class(), id);
if (j != null)
session.merge(myObj);
else
session.saveOrUpdate(myObj);
назовите hibernate.saveOrUpdate (), который проверит, находится ли объект в базе данных, обновите его, если это, и сохраните (т.е. вставьте), это, если это не.