gpt4 book ai didi

java - 如何在 Hibernate 中内连接两个独立实体

转载 作者:行者123 更新时间:2023-11-30 07:13:14 25 4
gpt4 key购买 nike

我有 2 个实体:DocumentEntity(docNumber(主键)、dateOfFill,...)FileEntity(id、标题、大小、...)。我有一个内连接为 2 的 HQL 查询,它应该在 Oracle DB 上运行:

String queryStr = "SELECT docNumber " +
+ "FROM DocumentEntity d " +
+ "INNER JOIN FileEntity f " +
+ "ON d.docNumber = f.title " +
+ "WHERE d.date > to_date('01.01.2011','dd.mm.yyyy')"

Query query = em.createQuery(query_string);
return query.getResultList();

当我运行代码片段时,我收到异常org.hibernate.hql.ast.QuerySyntaxException:加入的路径预期!

我看过了

但没有解决我的问题。本示例中无法使用建议的路径(至少它会给出错误的路径错误)。最后一个链接的答案是:

Joins can only be used when there is an association between entities.

问题是我无法关联这两个实体。

问题是:我如何加入这两个实体?

更新:我的实体是:

@Entity
@Table(name = "DOCUMENT")
public class DocumentEntity implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@Column(name = "DOC_NUMBER", nullable = false)
private String docNumber;

@Basic(optional = false)
@Column(name = "DATE_OF_FILL")
@Temporal(TemporalType.DATE)
private Date dateOfFill;

...
}

@Entity
@Table(name = "FS_FILE")
public class FileEntity implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@SequenceGenerator(name = "FS_FILE_SEQ", allocationSize = 1, sequenceName = "FS_FILE_SEQ")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "FS_FILE_SEQ")
@Column(name = "ID", nullable = false)
protected Long id;

@Column(name = "TITLE", nullable = false)
protected String title;

@Column(name = "MIMETYPE", nullable = false)
protected String mimetype;

@Column(name = "FILESIZE", nullable = false)
protected Long filesize;

@Column(name = "FILEPATH", nullable = false)
protected String filepath;

...
}

最佳答案

在这种情况下,您不需要执行联接,因为您使用条件 d.docNumber = f.title 限制结果。只需在 where 子句中添加条件并使用 SQL 查询而不是 JPQL 查询,因为它似乎更符合您的需求。

String sqlString= "SELECT d.docNumber " +
+ "FROM DOCUMENT d, FS_FILE f " +
+ "WHERE d.docNumber = f.title " +
+ "AND d.date > to_date('01.01.2011','dd.mm.yyyy')"


Query query = em.createNativeQuery(sqlString);
return query.getResultList();

关于java - 如何在 Hibernate 中内连接两个独立实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38831335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com