【发布时间】:2016-12-14 08:30:16
【问题描述】:
我有 2 个实体:DocumentEntity (docNumber (primary key), dateOfFill, ...) 和 FileEntity (id, title, size, ...)。我有一个内部连接为 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();
当我运行代码 sn-p 时,我得到一个异常 org.hibernate.hql.ast.QuerySyntaxException: Path expected for join!
我看过
- Hibernate 4.3.6 QuerySyntaxException: Path expected for join
- HQL ERROR: Path expected for join
- Path Expected for Join! Nhibernate Error
- HQL Hibernate INNER JOIN
但没有一个解决我的问题。在这个例子中不能使用建议的路径(至少它给出了错误的路径错误)。最后一个链接的答案是:
只有在实体之间存在关联时才能使用联接。
问题是我无法关联这两个实体。
问题是: 如何加入这 2 个实体?
更新: 我的实体是:
@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;
...
}
【问题讨论】:
-
你能显示你的两个实体的配置吗?
-
@davidhxxx:你到底是什么意思?你到底想看到什么?
-
@davidhxxx:我刚刚更新了问题。
-
要进行连接,从属实体中至少应该有一个 fk 字段。没看到啊。。
-
@davidhxxx:是的,我没有 FK,因为 FS_FILE 的数据来自 DOCUMENT 以外的表。
标签: java oracle hibernate join entity