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

如何在不获取完整实体的情况下获取从属Hibernate实体的外键列值?

在不获取完整实体的情况下,获取从属Hibernate实体的外键列值,可以通过以下方法实现:

  1. 使用HQL查询:
代码语言:java
复制
String hql = "SELECT e.id FROM Entity e WHERE e.parentId = :parentId";
Query query = session.createQuery(hql);
query.setParameter("parentId", parentId);
List<Integer> ids = query.list();
  1. 使用Criteria查询:
代码语言:java
复制
Criteria criteria = session.createCriteria(Entity.class);
criteria.setProjection(Projections.property("id"));
criteria.add(Restrictions.eq("parentId", parentId));
List<Integer> ids = criteria.list();
  1. 使用原生SQL查询:
代码语言:java
复制
String sql = "SELECT id FROM entity WHERE parent_id = :parentId";
Query query = session.createSQLQuery(sql);
query.setParameter("parentId", parentId);
List<Integer> ids = query.list();
  1. 使用JPA Criteria API:
代码语言:java
复制
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Integer> cq = cb.createQuery(Integer.class);
Root<Entity> root = cq.from(Entity.class);
cq.select(root.get("id"));
cq.where(cb.equal(root.get("parentId"), parentId));
TypedQuery<Integer> query = entityManager.createQuery(cq);
List<Integer> ids = query.getResultList();

以上方法均可以实现在不获取完整实体的情况下,获取从属Hibernate实体的外键列值。其中,HQL、Criteria和JPA Criteria API是Hibernate提供的查询方式,而原生SQL查询则是直接使用SQL语句查询。

需要注意的是,以上方法中的Entityid应该替换为实际的实体类名和外键列名。同时,parentId应该替换为实际的外键值。

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

相关·内容

Hibernate框架学习之注解配置关系映射

@JoinColumn用于配置,name属性用于指定列名,Hibernate将会在userinfo表中增加一个字段用做。...@JoinColumn依然用于配置。 对比着表中各个字段,再次体会下上述注解中属性各个意义。 ?...name 属性指定表名,joinColumns 配置及其依赖属性字段,我们这里在新表中指定一名为user_id并且依赖于userinfo实体主键字段,inverseJoinColumns...用于指定关联实体,我们这里在新表中会生成一名hobbyid并依赖Hobby实体主键值。...hibernate通过左连接将根据和usercode表主键值连接了两张表,于是我们可以通过usercode主键一次性查到两张表对应记录,最后为我们返回相应实例。

2.2K90

Hibernate注解之基本注解注解使用

-- 配置生成Hibernate_sequence --> false...Table : 在实体上方使用,和Entity配合使用,指定实体类对应数据库中信息 name :可选,指定表名称,默认是和类名一样,只有在不一致情况下才会指定表名 catalog...01 TemporalType.TIMESTAMP 两者兼备,这个是默认 @Column - 可将属性映射到,使用该注解来覆盖默认,@Column描述了数据库表中 该字段详细定义...,但是我们也可以使用这个注解改变这个名称 这个注解是用来设置自动生成属性,比如名称,非空…… name 指定名称 nullable 指定是否为空,默认是true...name 设置第三张表名称 joinColumns 设置是当前实体类对应表在第三张表字段名称 inverseJoinColumns 设置是另外一个实体类对应表在第三张表字段名称

1.9K10

Hibernate框架学习之注解映射实体

length:指定该属性映射到数据表中所能保存数据最大长度,默认是255 默认情况下,我们不使用@Column修饰属性时候,hibernate会自动以该属性名称映射到数据表中。...三、使用注解映射主键属性 最简单情况下,我们使用注解@Id标识实体类中某个属性,那么该属性将会被hibernate映射到数据库主键字段,并且无需指定任何属性。...@CollectionTable注解用于配置为集合属性生成那张新表基本信息,name 指定新表表名,joinColumns是一个注解@JoinColumn,该注解专门用于配置,这里我们给他命名为...而对于有序集合来说,还应该包含一个字段用于保存每个集合元素在集合中序号,该序号字段和第一个依赖字段组合成新表联合主键,唯一标识一条记录。...对于性能要求,hibernate推荐实体类属性使用数组类型,建议优先使用集合类型。

3K90

高级框架-springDate-JPA 第二天【悟空教程】

在数据库中建立一对多关系,需要使用数据库约束。 什么是? 指的是从表中有一,取值参照主表主键,这一就是。 一对多数据库关系建立,如下图所示 ?...属性: name:指定字段名称 referencedColumnName:指定引用主表主键字段名称 unique:是否唯一。默认唯一 nullable:是否允许为空。...* 删除主表数据: * 有从表数据引用 * 1、在默认情况下,它会把字段置为 null,然后删除主表数据。 * 如果在数据库表结构上,字段有非空约束,默认情况就会报错了。...:中间表字段关联对方表主键字段 5.4.3 @JoinColumn 作用: 用于定义主键字段和字段对应关系。...属性: name:指定字段名称 referencedColumnName:指定引用主表主键字段名称 unique:是否唯一。默认唯一 nullable:是否允许为空。

2.5K10

Hibernate核心对象关系映射

uuid:指定uuid随机生成全球唯一                      foreign:(使用,one-to-one时候使用)         2.1.2:多列作为主键映射...(1)如果找不到合适列作为主键,除了用id,我们一般使用联合主键,即多作为一个主键,从而保证记录唯一性。...-- 7 第一部分:映射文件:映射一个实体类对象,用来描述一个对象最终实现可以直接保存对象数据到数据库中 8 package(可选):要映射对象即实体类所在包,如果指定package...uuid:指定uuid随机生成序列号,唯一,为主键,uuid为string类型                    foreign:方式,one-to-one方式;            ...类型:必须写全名,java.lang.String;                hibernate类型:string类型;直接写类型,都是小写          --> 35 <property

1.9K60

jpaspringdata(1)jpa

/*获取主键方式,主键id描述,在hibernate中,以及mybatis中resultmap都是描述为id标签, 这里获取主键方式有IDENTITY:采用数据库 ID自增长方式来自增主键段...    valueColumnName="PK_VALUE",//数据库表对应名称     allocationSize=100)//这里设置,PK_VALUE设置为100,每次id自增100...="mgr")//mappedBy="mgr"表示维护一端,没写默认都是对应主键关联 public Department getDept() { return dept;...映射当前类所在表在中间表中,name 指定列名, referencedColumnName 指定关联当前表哪一,inverseJoinColumns={@JoinColumn...(name="CATEGORY_ID", referencedColumnName="ID")})//inverseJoinColumns 映射关联类所在中间表 @ManyToMany

1.9K20

SSH框架之Hibernate第四篇

secondaryTable : 从表名.如果此列建在主表上(默认在主表),该属性定义该所在从表名字. 2.4主键生成策略 通过annotation(注解)来映射hibernate...默认唯一 nullable:是否允许为空。默认允许。 insertable:是否允许插入。默认允许。 updatable:是否允许更新。默认允许。...3.2.1.2@JoinTable 作用: 针对中间表配置 属性: name:配置中间表名称 joinColumns:中间表字段关联当前实体类所对应表主键字段...inverseJoinColumn:中间表字段关联对方表主键字段 3.2.1.3@JoinColumn 作用: 用于定义主键字段和字段对应关系...默认唯一 nullable:是否允许为空。默认允许。 insertable:是否允许插入。默认允许。 updatable:是否允许更新。默认允许。

3.5K20

Hibernate关联关系

,还是第一个样子 总结 单向连接就是只能通过一个对象访问另一个对象属性,只需要在一个实体类中添加另外一个类对象为成员变量即可,并且在该对象get方法上添加OneToOne注解即可,就表示这个对象主键会作为该实体...,在建立表时候总是在Many一方添加One一方 在单向外关联中,如果通过One一方获取Many一方数据,那么需要在One实体类中添加Many实体对象为其成员变量,同时在这个成员变量...@JoinColumn改变字段名,那么必须在One实体类中使用,因为是设置在One一方表中 双向外关联必须使用@OneToMany(mappedBy=)设置主导地位表,如果设置这个...,如果默认是student_teacher,joinColumns指定是当前实体键名称,inverseJoinColumns指定是另外一个实体键名称 //如果指定名称,那么默认是...,如果默认是student_teacher,joinColumns指定是当前实体键名称,inverseJoinColumns指定是另外一个实体键名称 //如果指定名称,那么默认

6.2K30

数据库表结构设计原则有哪些_数据库表设计方法

对于表逻辑结构我遵循设计原则:一个表只包含一个主要实体,如果主要实体中包含从属实体数据,并且多个主要实体共享一个从属实体,则把从属实体单独设计为表,与主要实体关联,这样增加一个从属实体增加单独表就行...如果主要实体共享从属实体,把从属实体多个字段打包合并为一个字段。合并字段方式在上面也有提及,它不仅减少字段数目,而且让在合并字段中增加数据字段变得非常容易。...分表最基本方法就是,固定法:根据ID特性把表拆分成固定N个表、动态增长法:根据ID分成等值区间任意多表、划分法:根据键值得特性划分。...划分法是根据键值对表进行划分,基本方法也就是固定法和动态增长法。...例如论坛帖子可以按照论坛板块ID来分表,每个板块一个表多个板块一个表,这是划分法。如果论坛和帖子是多对多关系,那么帖子可以采用动态增长法分表,然后再把帖子和板块关系表采用划分法来分。

67820

JPA 注解学习

可选,该是否作为生成insert语句中一个(默认true) (5) updatable 可选,该是否作为生成update语句中一个(默认true) (6) columnDefinition...• 其中一个实体通过关联到另一个实体主键。注:一对一,则必须为唯一约束。...该关联表包含指回实体(通过@JoinTable.joinColumns)以及指向目标实体(通过@JoinTable.inverseJoinColumns)....指向主表键名:主表表名+下划线+主表主键列名 指向从表定义为唯一约束,用来表示一对多关联关系。...默认: 关联表名:主表表名 + 下划线 + 从表表名;关联表到主表:主表表名 + 下划线 + 主表中主键列名;关联表到从表键名:主表中用于关联属性名+ 下划线 + 从表主键列名。

2.9K10

初识Hibernate之关联映射(一)

显然,在分别创建Student和Grade表之后,Hibernate又向数据库发送了一条alter语句,该语句负责添加关联。下面我们看看能否利用获取到Grade表中成绩。...,那么grade代表Grade表一条记录,而该对象作为属性被赋值给Student中grade属性则表示它将自己引用交给了Student字段,也就是说student这条记录可以通过字段找到...有点绕,但是学过数据库原理应该不难理解。下面我们看,如何利用获取对应Grade表中一条完整记录。...对象代表就是基于Student字段在Grade表中一条数据。...这样,我们既可以从多一端通过获取到一一端详细记录又可以从一一端通过自己主键获取到多一端所有对应记录。

1.3K80

一篇 JPA 总结

**@Table** 当实体类与其映射数据库表名不同名时需要使用 @Table 标注说明,该标注与 @Entity 标注并列使用 **@id** @Id 标注用于声明一个实体属性映射为数据库主键...关联关系映射(使用 IDEA 可以使用实体生成表,也可以使用对应额表逆向生成实体类) 单向多对一(orders - customer) 表结构(oreders 表中有 customer 表映射...实体映射 ? ? 方法测试 保存数据(先保存维护关联关系一端,否则会多出 UPDATE 语句) ? 使用 IDEA 反向生成实体(双向一对一) ?...方法测试 获取某一范围所有属性集合 ? 获取某一范围部分属性集合,其和获取所有属性集合所使用方法一样,不同是 jpql 语句不一样,且需要对应实体有部分属性构造器 ?...JPQL 还支持二级缓存,order by 子句,group by 子句,聚合查询,having 子句,关联查询,子查询等,JPQL 还有大量函数,字符串处理函数,算术函数和日期函数等功能,这里就不再一一

5.6K20

Hibernate之集合映射使用(Set集合映射,list集合映射,Map集合映射)

,即主键,所有为了方便用id,因为id是数据库系统维护可以保证唯一,所以就把这列作为主键,简单说为了方便;如果找不到合适,除了使用id以为作为主键,也可以使用联合主键,即多作为一个主键,...           key指定集合表(t_address)字段            element指定集合表其他字段 type元素类型,一定要指定   (2...(t_addressList)字段                 element指定集合表其他字段                 type元素类型,一定要指定  ...19 key指定集合表(t_address)字段 20 element指定集合表其他字段 21...33 key指定集合表(t_addressList)字段 34 element指定集合表其他字段 35

2.7K100

JPA作持久层操作

JPA(Hibernate是jpa实现) jpa是对实体类操作,从而通过封装好接口直接设置数据库表结构。...插入时,自动生成主键ID为:6,ID为:3 一对多 接着我们来看一对多关联,比如每个用户成绩信息: Account类: @JoinColumn(name = "uid") //注意这里name...指的是Score表中uid字段对应就是当前主键,会将uid设置为当前主键 //执行语句为:alter table account_score add constraint xxxxx foreign...@JoinColumn(name = "tid") //存储教师ID字段,和一对一是一样,也会在当前表中创个tid,对应Teacher表主键 Teacher teacher; //执行代码...inverseJoinColumns = @JoinColumn(name = "tid") //教师实体主键在关联表中字段名称,并在当前表中创建tid字段作为连接关联表tid

1.2K10
领券