hibernate,是否可能将负载与条件混合?

hibernate,是否可能将负载与条件混合?,hibernate,generics,Hibernate,Generics,是否可以将session.loadclass id与灵活的标准api混合使用 我需要像这样的东西: select * from entity where id = 1 AND name = 'miller' 我使用通用方法查找id: 我想通过 Criteria criteria = session.createCriteria(getPersistentClass()); criteria.add( Restrictions.eq("name", "miller")); 其中

是否可以将session.loadclass id与灵活的标准api混合使用

我需要像这样的东西:

select * from entity where id = 1 AND name = 'miller'
我使用通用方法查找id:

我想通过

    Criteria criteria = session.createCriteria(getPersistentClass());
    criteria.add( Restrictions.eq("name", "miller"));

其中,名称miller将替换为通用名称。

加载和标准不能混合。如果实例尚不在缓存中,Load将创建代理。load and get的目的是,它的参数是缓存类和id的键,不需要在刷新会话之前进行刷新。条件是一种查询。当您已经知道id时,就不再需要查询了。我的意思是,id=1和name='miller'有什么意义吗

只要写下你自己得到的:

public TEntity secureGet<TEntity>(int id, string user)
{
  // avoid flushing, only when you never expect that the user name
  // in the object to be loaded has changed within the current session.
  // this is very performance relevant.
  session.flushMode = FlushMode.Never;
  return session
    .createCriteria(typeof(TEntity))
    .add( Restrictions.idEq(id))
    .add( Restrictions.eq("name", user))
    .UniqueResult<TEntity>();
  session.flushMode = FlushMode.Auto;
}

很抱歉可能出现语法错误,我不是java程序员

是的,作为授权概念的一部分,它是有意义的。我可以检查当前用户是否被允许查看id=1的数据。@dodiddone:您打算怎么做?对于实体类中的特定记录,您不需要另一个具有用户权限的表吗?添加了一个示例实现。@Olaf是的,这是正确的,我简化了示例,添加了具有用户权限的其他实体等。
public TEntity secureGet<TEntity>(int id, string user)
{
  // avoid flushing, only when you never expect that the user name
  // in the object to be loaded has changed within the current session.
  // this is very performance relevant.
  session.flushMode = FlushMode.Never;
  return session
    .createCriteria(typeof(TEntity))
    .add( Restrictions.idEq(id))
    .add( Restrictions.eq("name", user))
    .UniqueResult<TEntity>();
  session.flushMode = FlushMode.Auto;
}