我在mysql中有3个表
User --------------------- `id` (auto increment)(PK) `user_name` `password` `first_name` `last_name` `created_at` `modified_at` `email`
User_Role ----------------------- `user_id` (PK) `role_id` (PK)
Role ---------------------- `id`(PK) `name`
我想执行查询
SELECT u.*,r.name
FROM user u
JOIN user_role ur ON UR.user_id=u.id
JOIN role r on UR.role_id=r.id
任何人都可以帮我解决NHibernate的标准吗?
我尝试使用此代码
ICriteria Criteria = session.CreateCriteria(typeof(User));
Criteria.CreateAlias("User_Role", "User_Role");
Criteria.CreateAlias("User_Role.Role", "UsrRole");
Criteria.Add(Expression.Eq("id", Uid));
但它显示错误。
我想使用查询
从这些表中获取信息 SELECT u.*,r.name
FROM user u
JOIN user_role ur ON UR.user_id=u.id
JOIN role r on UR.role_id=r.id
我尝试使用此代码
ICriteria Criteria = session.CreateCriteria(typeof(User));
Criteria.CreateAlias("User_Role", "User_Role");
Criteria.CreateAlias("User_Role.Role", "UsrRole");
Criteria.Add(Expression.Eq("id", Uid));
但显示错误
答案 0 :(得分:0)
NHibernate将自动生成必要的查询。阅读http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/tutorial.html#tutorial-associations。然后考虑一下你的类和映射。
可能看起来像
namespace FirstSolution.Domain
{
public class User
{
public Guid id { get; set; }
public string user_name { get; set; }
/* ... */
}
}
和
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="FirstSolution"
namespace="FirstSolution.Domain">
<class name="User">
<id name="id">
<generator class="guid" />
</id>
<property name="user_name" />
</class>
</hibernate-mapping>