hibernate 怎么给非表字段实体赋值

[复制链接]
查看11 | 回复6 | 2021-1-27 06:48:26 | 显示全部楼层 |阅读模式
现有一张表user_info里面字段有id,user_name,company_id(对应下面的公司id)
还有一张表company_info里面有字段id,company_name(公司名称)
UserInfo实体对应字段id,userName,companyId
CompanyInfo实体对应字段id,companyName
现在想要查询用户名称和用户所属公司名称,并且用一个实体返回
我在UserInfo实体里面加了companyName字段,查询代码如下:
Stringsql="selectu.*,c.company_nameascompanyNamefromuser_infou,company_infoconu.company_id=c.id";
Queryquery=sessionFactory.getCurrentSession().createSQLQuery(sql).addEntity(UserInfo.class);
return(List[U])query.list();
这样sql语句可以查出来companyName,但是没有映射到UserInfo实体里面这个字段上
这里语法该怎么写

分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:48:26 | 显示全部楼层
ORM微持久框架
http://www.verejava.com/?section_id=1704463330451
回复

使用道具 举报

千问 | 2021-1-27 06:48:26 | 显示全部楼层
selectu.company_idascompanyId,u.user_nameasuserName,c.company_nameascompanyNamefromuser_infou,company_infoconu.company_id=c.id
query.setResultTransformer(Transformers.aliasToBean(UserInfo.class));
回复

使用道具 举报

千问 | 2021-1-27 06:48:26 | 显示全部楼层
引用2楼gl74gs48的回复:selectu.company_idascompanyId,u.user_nameasuserName,c.company_nameascompanyNamefromuser_infou,company_infoconu.company_id=c.id
query.setResultTransformer(Transformers.aliasToBean(UserInfo.class));

companyName这个字段UserInfo实体对应的表没有这个字段需要在这个字段上面加@Transient注解吗
回复

使用道具 举报

千问 | 2021-1-27 06:48:26 | 显示全部楼层
配置多对一或多表连接,在实体类中定义一个你要获取的字段接收


回复

使用道具 举报

千问 | 2021-1-27 06:48:26 | 显示全部楼层
对的,要加注,否则会报错
回复

使用道具 举报

千问 | 2021-1-27 06:48:26 | 显示全部楼层
非表字段需要加@Transient
hibernate可以强制转换对象而非实体query.setResultTransformer(Transformers.aliasToBean(UserEntity.class));可以把非实体对象注入
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行