gpt4 book ai didi

java - 使用 hibernate 进行内连接

转载 作者:行者123 更新时间:2023-11-29 12:19:08 24 4
gpt4 key购买 nike

我有两个类 Task 和 TaskComponents。 TaskComponents 包含由Task_ID 映射的任务。我正在尝试选择加入到 TaskComponents 表的任务。我尝试了许多不同的 SQL 语句,但它们都返回了 QuerySyntaxException Path Expected to join。

任务 POJO

@Entity
@Table(name = "task")
public class Task implements Serializable {

@Id
@Column(name = "ID")
private int Id;

@Column(name = "Name")
private String name;

@Column(name = "Description")
private String description;

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "Site_ID")
private Site site;

public int getId() {
return Id;
}

public void setId(int Id) {
this.Id = Id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getDescription() {
return description;
}

public void setDescription(String description) {
this.description = description;
}

public Site getSite() {
return site;
}

public void setSite(Site site) {
this.site = site;
}


}

任务组件 POJO

@Entity
@Table(name = "taskcomponents")
public class TaskComponents implements Serializable {

@Id
@Column(name = "ID")
private int Id;

@Column(name = "VersionName")
private String versionName;

@Column(name = "Live", nullable = false)
@Type(type = "org.hibernate.type.NumericBooleanType")
private boolean live;

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "Task_ID")
private Task task;

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "Group_ID")
private GroupDB group;

public int getId() {
return Id;
}

public void setId(int Id) {
this.Id = Id;
}

public String getVersionName() {
return versionName;
}

public void setVersionName(String versionName) {
this.versionName = versionName;
}

public boolean isLive() {
return live;
}

public void setLive(boolean live) {
this.live = live;
}

public Task getTask() {
return task;
}

public void setTask(Task task) {
this.task = task;
}

public GroupDB getGroup() {
return group;
}

public void setGroup(GroupDB group) {
this.group = group;
}
}

以及我尝试的查询。

Query query = session.createQuery("SELECT t FROM Task t INNER JOIN TaskComponents tc ON t.Id=tc.task.Id");

Query query = session.createQuery("SELECT t FROM Task t INNER JOIN TaskComponents tc ON t=tc.task");

最佳答案

您不应该显式使用 ON 来定义连接,Hibernate 会从映射中推断它,只需将查询编写为

SELECT tc.task FROM TaskComponents tc INNER JOIN tc.task

这是错误消息后面引用的内容连接所需的路径查询需要从一个实体到另一个实体的属性定义路径

关于java - 使用 hibernate 进行内连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29299027/

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