#hibernate #jpa
#переход в спящий режим #jpa
Вопрос:
У меня есть таблица с составным первичным ключом:
Берем пример из таблиц из другого вопроса в SO
класс составного первичного ключа:
@Embeddable
public class TimePK implements Serializable {
protected Integer levelStation;
protected Integer confPathID;
protected Integer col1;
protected Integer col2;
public TimePK() {}
public TimePK(Integer levelStation, Integer confPathID, Integer col1, Integer col2) {
this.levelStation = levelStation;
this.confPathID = confPathID;
this.col1 = col1;
this.col2 = col2;
}
// equals, hashCode
}
и объект:
@Entity
class Time implements Serializable {
@EmbeddedId
private TimePK timePK;
private String src;
private String dst;
private Integer distance;
private Integer price;
//...
}
В нем будет две записи persistent.xml как:
com.somepackage.Время com.somepackage.TimePK
Вопрос:
Как использовать вышеуказанные классы в запросе?? например, Найти confPathId, col2 где levelstation равно 10, а col1 равно 20 — каким будет запрос hibernate для этого требования?
Использование «from TimePK T» в запросе выдает ошибку «TimePK не сопоставлен»!!
Ответ №1:
Взгляните на спецификацию JPA.
В разделе 2.4.1.3 Examples of Derived Identities
определяется множество примеров.
Комментарии:
1. «с момента времени T, где T.timePK.levelStation = 10 и T.timePK.col1 = 20» правильно??
Ответ №2:
Ваш TimePK не является реальной сущностью (сопоставленной с таблицей в БД), это виртуальный объект, содержащий PK вашего объекта Time. Вы должны найти объект Time, а не TimePK.