首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

通过子级中的parentId对NHibernate进行分组,并从此parentId的父表中获取值

NHibernate是一个开源的对象关系映射(ORM)框架,用于将面向对象的程序与关系型数据库进行交互。它提供了一种将对象模型映射到数据库模式的方式,使开发人员能够使用面向对象的方式进行数据库操作。

在NHibernate中,可以通过子级中的parentId对数据进行分组。这意味着可以根据parentId将数据进行分类和组织。通过这种方式,可以方便地对数据进行查询和操作。

在获取parentId的父表中的值时,可以通过使用NHibernate的关联映射来实现。关联映射允许将多个实体类关联起来,并通过关联关系进行数据查询和操作。

以下是一个示例代码,演示如何通过NHibernate进行子级分组并获取parentId的父表中的值:

代码语言:txt
复制
// 定义实体类
public class ParentEntity
{
    public virtual int Id { get; set; }
    public virtual string Value { get; set; }
    public virtual IList<ChildEntity> Children { get; set; }
}

public class ChildEntity
{
    public virtual int Id { get; set; }
    public virtual string Value { get; set; }
    public virtual ParentEntity Parent { get; set; }
}

// NHibernate映射文件
<class name="ParentEntity" table="parent_table">
    <id name="Id" column="id">
        <generator class="native" />
    </id>
    <property name="Value" column="value" />

    <bag name="Children" inverse="true" cascade="all">
        <key column="parent_id" />
        <one-to-many class="ChildEntity" />
    </bag>
</class>

<class name="ChildEntity" table="child_table">
    <id name="Id" column="id">
        <generator class="native" />
    </id>
    <property name="Value" column="value" />

    <many-to-one name="Parent" class="ParentEntity" column="parent_id" />
</class>

// 查询代码
var session = sessionFactory.OpenSession();
var result = session.QueryOver<ChildEntity>()
    .JoinQueryOver(x => x.Parent)
    .Where(x => x.Parent.Id == parentId)
    .List();

// 遍历结果
foreach (var child in result)
{
    var parentValue = child.Parent.Value;
    // 处理逻辑
}

在上述示例中,通过NHibernate的映射文件定义了ParentEntity和ChildEntity两个实体类的映射关系。通过查询代码,可以根据parentId获取对应的ChildEntity,并通过child.Parent.Value获取parentId的父表中的值。

对于NHibernate的分组和关联查询,腾讯云提供了云数据库TDSQL和云数据库CynosDB等产品,可以满足各类应用场景的需求。具体产品介绍和链接地址可以参考腾讯云官方文档:

通过使用NHibernate和腾讯云的相关产品,开发人员可以方便地进行子级分组和关联查询,并获取父表中的值,实现灵活高效的数据操作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

NHibernate介绍「建议收藏」

添加对NHibernate引用 当下载解压NHibernate安装包后,电脑上就会创建一些目录,包括“Required_Bins”,要把 Required_Bins目录下DLL引用到项目里来,它们是...创建数据模型 NHibernate允许直接使用Plain Old CLR Objects (POCOs),而不用通过存储过程来直接和数据库交互。使用POCOs一个优势在于不用绑定特定持久化层。...m_Description; } set { m_Description = value; } } /// /// ...创建NHibernate映射文件 Nhibernate使用XML映射文件来映射POCO到数据库对象。虽然在很多案例这可能是一一关系,但这并不是必定。...class元素表示到单个POCO映射。name表示上面的程序集和命名空间中类名,table属性告诉NHibernate数据库哪个或者视图将被映射。

70320

MySQL 递归查询实践总结

MySQL复杂查询使用实例 By:授客 结构设计 SELECT id, `name`, parent_id FROM `tb_testcase_suite` ?...说明: parent_id值关联自身id列值,如果其值为-1,则表示该记录不存在记录,否则表示该记录存在记录(假设parent_id值为5,则记录id为5),暂且把该记录自身称之为记录...,记录称之为祖先记录,记录称之为后辈记录 查询需求 1) 根据指定记录id,查询该记录关联所有祖先记录,并按层级返回祖先记录name 2) 根据指定parent_id,查询其关联所有后辈记录...id 查询实现 通过函数调用实现 1)根据指定记录id,查询该记录关联所有祖先记录,并按层级返回祖先记录name # 向下递归 DROP FUNCTION IF EXISTS queryChildrenSuiteIds...一直取最后一次查到非0值,进而导致死循环 SET suiteId = parentId; SET parentId = 0; SELECT parent_id, `name

1.8K40
  • treeview插件使用:根据节点选中节点

    授权人员授权操作是通过树形菜单复选框进行勾选后保存来完成,如下图所示: ?   ...bootstrap-treeview本身勾选/取消支持是没问题,问题在于复选框业务逻辑上:     ① 如果 勾选了节点,怎么让节点全部变为勾选状态?     ...("uncheckNode", node); } }); $("#modal").modal("show"); }); }    然后,通过选中的当前节点进行遍历...基于同样思想,要想实现选中某一节点后同时选中所有的节点,那么只需要在代码中继续添加:① 通过节点判断节点存在;② 选中节点;③ 递归判断。...正当我喜滋滋以为功能实现了时候,突然发现了很大bug,就是在通过节点选中所有节点功能实现,选中是没有问题,可是当取消某个子节点,无论兄弟节点是否有选中,节点都一被取消掉了。

    6K40

    NHibernate联合主键详细示例

    使用NHibernate实现一多,多关联很是简单,可如果要用复合主键实现确实让人有些淡淡疼。虽然很淡疼但还是要去抹平这个坑,在下不才,愿意尝试。...以示例进入正文,源码下载地址: 一、数据关系图 很明显,他是一个自引用数表,实现无限树结构存储。...实现一 和 多映射 这步没有多大难度,主要处理好注解顺序即可,以及OneToMany时联合主键如何设置问题.示例代码如下: [Bag(0, Name = "Childs", Cascade...= "all", Lazy = CollectionLazy.False, Inverse = true)] [Key(1)] [Column(2, Name = "ParentId")] [Column...,与联合主键共用了一个字段GroupNumber,导致在NHibernate做映射转换时候会多计算出一个需要填充值,但SqlParameterCollection又少一个位置。

    1.5K80

    day71_淘淘商城项目_04_匠心笔记

    )系统搭建 1.1、什么是门户系统   从广义上来说,它将各种应用系统、数据资源和互联网资源集成到一个信息管理平台之上,并以统一用户界面提供给用户,建立企业客户、企业对内部员工和企业企业信息通道...3、CMS内容管理系统介绍 3.1、首页大广告位开发实现分析 可以根据首页大广告位数据结构设计一张进行增删改查管理。 其他部分展示内容同样可以设计进行增删改查。...内容分类和内容是一关系。 ? 内容分类,需要存储树形结构数据。...2、如果删除节点是节点,则直接删除;   再查看删除节点节点下是否还有节点,如果没有需要把删除节点节点is_parent改为false。   ...{ // 通过节点节点id获取对应节点节点列表长度             // 是单个子节点,获取单个子节点节点,把该节点is_parent改为false,更新数据

    95110

    6. 商品分类和轮播广告展示

    在我们实现,为了效果展示,我们仅仅是展示3分类,在大多数中小型电商系统,三分类完全足够应对SKU分类。 需求分析 先来分析分类都包含哪些元素,以jd为例: ?...【开发之前】,需求进行拆解,然后分解开发流程,这样可以保证我们更好理解需求,以及在开发之前发现一部分不合理需求,并且如果需求设计不合理的话,开发人员完全有权,也有责任告知PM。...,我们是在同一张做自连接查询,因此,通用mapper已经不适合我们使用,因此我们需要自定义mapper来实现我们需求。...IOC容器查找属性,返回。...源码下载 Github 传送门 Gitee 传送门 下节预告 下一节我们将继续开发我们电商核心部分-商品列表和详情展示,在过程中使用到任何开发组件,我都会通过专门一节来进行介绍,兄弟们末慌!

    1.8K40

    js将列表组装成树结构两种方式

    工作偶尔就会遇到后端同学丢来一个列表,要我们自己组装成一个树结构渲染到页面上,本文以两种不同方式探索生成树算法思想。...背景介绍 可组装成树结构数组一般有以下几个要素: id 当前节点id parentId 当前节点节点id children 节点列表(可能不会在接口中返回,需要组装时候自己加上) 原始结构:...目标结构: 关键就是一维数组通过parentId找到其对应节点添加到节点children数组。...实现方案 最直接方式就是遍历数组,并把找到节点逐一添加到节点中 function listToTreeSimple(data) { const res = []; data.forEach...parent.children.push(item); } else { // * 根节点 res.push(item); } }); return res; } 考虑进一步优化,使用哈希

    20410

    当Mybatis遇上目录树,有哪些解决方法?

    ,我们试试查找father_id是1分类数据,也就是查询甜点/蛋糕分类下面的二和三分类,执行如下语句 SELECT f.id AS id, f....如果不用List集合,而把所有属性放在一个VO,前端收到数据形式和你此时在数据库查询出来一样,有多条蛋糕记录,底下对应着不同具体食品,这让前端不好处理也不符合逻辑,正常逻辑应该是只有一个蛋糕分类,然后这个分类里面有数组去装着蛋糕对应分类才...,前端调用一分类接口,我们只需要查询type为1数据返回给前端,鼠标移动到一分类,就调用获取分类接口,前端传入对应一分类id给后端,后端将这个id作为father_id去查询分类。...此刻我换一个数据库例子,但是还是和上面一个处理一分类例子一样 数据如下 结构如下 和上一个例子大同小异,type依然表示目录级别 此刻需要返回给前端VO如下,此刻我只写了一个...); // 通过id查询分类 if (!

    20610

    java若依框架学习(一)菜单保存到数据库,根据不同权限拿出不同菜单

    目录 数据库 和菜单相关数据库 查询出数据 处理查询出数据,整理为关系后返回 数据库 和菜单相关数据库 ?... 以上是全部菜单都查询出来了,我们还需要根据父子进行处理一下数据,将处理之后数据再返回给前段。...处理查询出数据,整理为关系后返回 先将id为0菜单整理出来, getChildPerms(menus, 0) 第一个参数是查询出菜单集合,第二个参数是id, /**...* 根据节点ID获取所有节点 * * @param list 分类 * @param parentId 传入节点ID * @return String...ID,遍历该节点所有节点 if (t.getParentId() == parentId) { 只要遍历出菜单parentId

    2K10

    省市县三数据联动 -Java

    这里就直接上表(本使用是2019年国家行政区地区信息) 资源链接 链接:https://pan.baidu.com/s/16ISH7MJbwx-Fa1ACZA3oww 提取码:l8dq -...-来自百度网盘超级会员V5分享 下面进行探索以及我踩得坑 1、第一步: 新建一个SpringBoot项目集成MyBatis(这里就不概述了) 2、第二步:编写Xml和接收数据实体类信息 <!...//ID private String cityName; //名称 private List child; //元素集合 } 第三步...* 于是进行三层封装数据处理。 * 尝试一: 正常数据过滤处理,最后执行打印语句时,出现堆栈溢出异常。 * 尝试二:每次查询到一组数据后,在原List数组删除已查询数据。...那就是SpringMVC在对多层数据进行封装时,一直嵌套循环,就如同套娃一样。 基于上面的问题: 方法一:我们自己将封装好provinceList转为String类型,返回给前端。

    2.6K20

    三种构建树形结构!!Stream牛逼

    平时大概率我们会构建一些树形结果返回给前端,比如菜单结构、部门列表、文件结构等,我们一般想到就是利用递归来循环构建;现在,就我个人解决方法如下: 原始递归 利用Java 8 Stream流进行处理...{ TreeSelect treeSelect = (TreeSelect) iterator.next(); // 如果是顶级节点, 遍历该节点所有节点...(Collectors.toList()); //根据parentId进行分组 Map> map = trees.stream...Stream在实际开发过程,运用得体的话,既能节省代码量,还能提高效率,但是复杂流式处理数据也会让代码看起来不易理解!...如果觉得内容不错的话,希望大家可以帮忙点赞转发一波,这是我最大鼓励,感谢 END

    62020

    商城项目-实现商品分类查询

    类目和商品(spu)是一多关系,类目与品牌是多多关系'; 因为商品分类会有层级关系,因此这里我们加入了parent_id字段,对本其它分类进行自关联。...这样就不用远程加载了 Array - 这里推荐使用url进行延迟加载,每当点击节点时,就会发起请求,根据节点id查询节点信息。..."sort": 1, // 顺序 "path": ["手机", "手机通讯", "手机"] // 所有节点名称数组 } 5.3.实现功能 5.3.1.url异步请求 给大家页面,treeData...pid=0 这是因为,我们有一个全局配置文件,所有的请求路径进行了约定: ?...其中/api是网关前缀,/item是网关路由映射,真实路径应该是/category/list 请求参数:pid=0,根据tree组件说明,应该是节点id,第一次查询为0,那就是查询一类目

    1.8K40

    你真的会玩SQL吗?表表达式,排名函数

    查询指定节点及其所有节点方法 你真的会玩SQL吗?让人晕头转向三值逻辑 你真的会玩SQL吗?EXISTS和IN之间区别 你真的会玩SQL吗?无处不在查询 你真的会玩SQL吗?...表表达式 期待单个值地方可以使用标量子查询 期待多个值地方可以使用多值查询 在期待出现地方可用查询或表表达式 1.派生 是从查询表达式派生出虚拟结果表表达式,派生存在范围只是外部查询...使用形式:from 派生 as 派生表列名 规则: 所有列必须有名称 列名必须唯一 不允许使用order by(除非指定了top) 不同于标量和多值查询,派生不能是相关,它必须是独立。...: 先建一张栏目如下,栏目Id,栏目名称,栏目的栏目 ?...,通过PARTITION BY选项来重新排序,给数据分区或者数据区域唯一递增序号 如:LastName以‘A’开头作为第一组,在这个组内进行排序。

    1.9K90

    EasyCVR角色绑定分组时候出现第一分组默认被绑定

    关于TSINGSEE青犀视频平台内通道管理和角色管理,是我们所有平台性能进行重新优化后功能提升。EasyCVR在更新后,能够支持帐号和角色设定,通过此功能,运维人员管理更加便捷。...在实际项目使用,EasyCVR出现角色绑定分组时候出现第一分组默认被绑定情况。我们该问题进行了分析,当修改角色分组,查找上级顶级链时候默认查找到第一个顶级链,就成功返回了。...image.png 添加如下代码,当用户修改角色分组时候,默认按照当前用户节点,直属上级节点去查找,然后再将其返回给前端,使其选中。...image.png TSINGSEE青犀视频团队在流媒体行业丰富开发经验,使得EasyCVR整个开发过程非常流畅,并且平台功能仍在持续拓展。...与其他视频平台不同是,EasyCVR能够支持视频分析数据与多源数据融合,可通过智能分析算法挖掘价值数据,这也是EasyCVR一个重要特点。

    24020

    使用递归实现地址数据菜单

    跟网上不同是,我这种方式是以时间换空间做法,不会一次性把数据全查出来再慢慢遍历,而是每次查询是否存在,有就递归下去查。...数据量大时,查库次数比较多,数据量少时对数据库查询次数少,压力较小,但是多次查询不会出现一次查询数据量很大卡住情况。 思路 先获取一菜单,每个一菜单设子区域。...递归核心就是在方法设置一个返回条件,防止无限递归下去。...递归查每一下面的: // 如果子下面,还有就递归 // 如果子下面,没有就返回退出递归 List<RegionBean...return childList; } return childList; } } class RegionDao { /** * 查询

    13040

    层级化NFT标准诞生:EIP-6150

    childOfParentByIndex 函数则是从指定节点下所有节点数组找出指定索引位置节点 tokenId,比如指定节点 parentId = 110,其下有 10 个子节点,找出索引位置为...indexInChildrenEnumeration 函数则是查询指定 tokenId 在指定节点下节点数组中所在索引位置,比如指定 tokenId = 1105,节点 parentId =...在 ERC721 ,每个 NFT 都只有唯一 owner 拥有管理权限。但在层级式结构,一个 NFT 是可以有多个管理员,就和文件系统可以有多个管理员一样。...canMintChildren 则用来判定某个 account 指定 parentId 是否具有铸造节点权限。...中间代码就是几个 mapping 进行赋值了,然后调用了 ERC721 _safeMint 函数实现底层铸造,接着就发送 Minted 事件了。

    1.6K30

    多叉树结合JavaScript树形组件实现无限树形结构(一种构建多级有序树形结构JSON(或XML)数据源方法)

    “无限树形结构”,顾名思义,没有级别的限制,它数据通常来自数据库无限层次数据,这种数据存储通常包括id和parentId这两个字段,以此来表示数据之间层次关系。...解决一次性构造无限树形结构问题,可以拓展出更多应用场景,例如树形结构表格TreeGrid,一次性生成树形表格,树形表格进行完整分页,对表格列进行全排序;或者可以利用本文思路扩展出其他更复杂应用场景...有了数据结构,还要实现相应算法,我们需要实现两种算法: 1、兄弟节点横向排序算法,隶属于同一个节点下面的所有直接节点按照某一节点属性和规则进行排序,保持兄弟节点横向有序; 2、先序遍历算法,递归打印出无限...在实际项目中,可以把上面的有效代码融入其中,或者在此基础上进行一些扩展: 1、 实现指定层次排序(例如只排序第一层节点,或者只排序某一节点下所有节点) 2、 遍历输出树形结构时可以加入判断条件过滤掉某些节点...树形表格也有一定价值: 1、 一次性构造树形表格,实现数据分级展示 2、 通过更换比较器,实现不同表格列全排序(全排序指的是所有页数据进行排序,而不是只对当前页数据排序;排序规则与

    2.6K00

    数据库-库设计 【分享一些库设计经验】

    ---- 实体与实体间对应关系 一一 一一,一般用于主表补充。假设A为用户信息,存储了用户姓名、性别、年龄等基本信息。用户家庭住址信息也属于用户基本信息。...一多 一多,是最常见一种设计。就是 A 一条记录,对应 B 多条记录,且 A 主键作为 B 外键。...商品 与 图片,一个商品对应多张图片,或者多张图片对应一个商品。 多多 构建一张关系将两张进行关联,形成多形式。...简言之就像一棵树一样,我们如何存储树形数据到数据库。 存储节点 存储于数据库,最简单直接方法,就是存储每个元素节点ID,即parent_Id->节点Id。...存储路径 将存储根结点到每个节点路径,这种数据结构,可以一眼就看出节点深度。要插入自己,然后查出节点Path,并且把自己生成ID更新到path中去。

    1.4K30
    领券