2015-03-27 3 views
0

У меня есть два класса Task and TaskComponents. TaskComponents содержит задачу, отображаемую Task_ID. Я пытаюсь выбрать задачу, связанную с таблицей TaskComponents. Я пробовал много разных операторов SQL, но все они возвращаются с QuerySyntaxException Path, ожидаемым для присоединения.INNER JOINs с использованием спящего режима

Task 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; 
} 


} 

TaskComponents 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"); 

ответ

1

Не следует использовать явно ON, чтобы определить соединение, Hibernate будет выводить его из отображения, просто написать запрос, как вы

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

это то, что называется за сообщения об ошибке Path expected for join запрос ожидает свойство, определенное путем от одного объекта к другому.

+0

Хорошо, спасибо, это сработало. Я вижу, где я был неправ. – OneTwo

Смежные вопросы