java - 在多列上使用投影 - 连接表

标签 java sql database hibernate mapping

美好的一天。

所以我有映射 @ID @GenerateValue(策略 = GenerationType.SEQUENCE, 生成器 = "discount_fares_id_sequence") @SequenceGenerator( 名称=“discount_fares_id_sequence”, 序列名称 = "discount_fares_id_seq", 分配大小 = 1 ) 私有(private)长ID;

@Column
private Long discount;

@Column(name = "fare_code", length = 255)
private String fareCode;

@ManyToOne
@JoinColumn(name = "aircompany_id", foreignKey = @ForeignKey(name = "fk_discfares_ref_aircompany_id"))
private AircompanyRB aircompanyId;

如何使用投影仅提取

折扣票价 ID 折扣 票价代码 和aircompany_id(AircompanyRB 的 key )

那么基本上 DiscountFares 的所有字段加上 AircompanyRB 的唯一键?

我试过了

    DetachedCriteria criteria = DetachedCriteria.forClass(DiscountFares.class)
        .createCriteria("aircompanyId")
        .setProjection(Projections.projectionList()
        .add(Projections.property("id"))
        .add(Projections.property("discount"))
        .add(Projections.property("fareCode")));

    List<DiscountFares> result = criteria.getExecutableCriteria(sessionFactory.getCurrentSession()).list();

但它抛出异常,说 AircompanyRB 没有“折扣”字段 (是的,它没有 - DiscountFares 有)

非常感谢! 非常感谢任何帮助

最佳答案

首先,使用 Criteria 查询而不是简单的 HQL 查询会让您的生活变得困难:

select df.id, df.discount, df.fareCode, ac.id 
from DiscountFares df
left join df.aircompanyId ac

现在,如果您确实想使用条件,只需翻译上面的查询即可:

Criteria c = session.createCriteria(DiscountFares.class, "df");
c.createAlias("df.aircompanyId", "ac", JoinType.LEFT_OUTER_JOIN);
c.setProjection(Projections.projectionList()
    .add(Projections.property("df.id"))
    .add(Projections.property("df.discount"))
    .add(Projections.property("df.fareCode"))
    .add(Projections.property("ac.id")));

关于java - 在多列上使用投影 - 连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25236923/

相关文章:

java - EWS Java 获取 session

SQL:如何检查列中的值是否等于行中其他列的任意组合的总和

sql - 数据库 SQL 错误,应该可以工作

SQL 计算项目状态历史记录在日期范围内的项目项

mysql - 这是在 MySQL 上查询关系表的有效方法吗?

php - 替换单引号以正确搜索数据库的最佳方法?

java - 如何将Android字符串数组加载到ListView中?

java - Spring MVC/Rest 中嵌入的 React 应用程序 : browser GET request routing

java - Netty - 发送失败 : UnsupportedOperationException: unsupported message type

sql - SQL下面的GORM(grails)条件是什么?