hibernate,是否可能将负载与条件混合?
是否可以将session.loadclass id与灵活的标准api混合使用 我需要像这样的东西: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")); 其中
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;
}