Как запустить запрос соединения HQL в Hibernate? Я вставил значения в таблицы отношений один к одному. Но прежде чем я вставляю в таблицы, мне нужно проверить, существует ли это значение. Если exit i нужен id для этой записи. После этого я вставляю в таблицу orderdetails.Как выполнить запрос соединения в спящем режиме?
Итак, мне нужно запустить SQL, чтобы получить идентификатор из таблицы.
Таблица: Продукт
Product_id
product_name
Таблица: версия
version_id
product_id
date
Поэтому мне нужно найти version_id если запись существует. Я хотел бы запустить SQL: select version_id from product p,version v where p.product_id=v.product_id and product_name='stackoverflow'
Я пробовал этот способ ..
Query q=session.createQuery("from Product p,Version v where p.product_id=v.product_id and productname='"+item+"'");
if(query.list().size()>0){
for(Iterator it=query.iterate();it.hasNext();)
{
Version std = (Version) it.next();
System.out.println("partid: " + std.getversion_id());
V.setversion_id(std.getversion_id());
}
Но выше код дает ошибку.
org.hibernate.QueryException: could not resolve property: product_id of: Version [from Product p,Version v where p.product_id=v.product_id and productname='stack']
at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:81)
at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:75)
at org.hibernate.persister.entity.AbstractEntityPersister.toType(AbstractEntityPersister.java:1465)
at org.hibernate.hql.ast.tree.FromElementType.getPropertyType(FromElementType.java:315)
at org.hibernate.hql.ast.tree.FromElement.getPropertyType(FromElement.java:487)
at org.hibernate.hql.ast.tree.DotNode.getDataType(DotNode.java:611)
at org.hibernate.hql.ast.tree.DotNode.prepareLhs(DotNode.java:263)
at org.hibernate.hql.ast.tree.DotNode.resolve(DotNode.java:210)
at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:117)
at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:113)
at org.hibernate.hql.ast.HqlSqlWalker.resolve(HqlSqlWalker.java:880)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1330)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:4471)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:3947)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2047)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1972)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:831)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:617)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:301)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:244)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:256)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:187)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:138)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:101)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:124)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1770)
at com.import(CompleteNotice.java:764)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)
Класс продукта:
@Entity
@Table(name="DBO.PRODUCT")
public class Product{
private String product_id;
private String product_name
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="PRODUT_ID")
public String getProduct_id() {
return product_id;
}
public void setProduct_id(String product_id) {
this.product_id = product_id;
}
@Column(name="PRODUCT_NAME")
public String getProduct_name() {
return product_name;
}
public void setProduct_name(String product_name) {
this.product_name = product_name;
}
}
Версия:
@Entity
@Table(name="DBO.VERSION")
public class Version {
private int version_id;
private int product_id;
private Product product;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="VERSION_ID")
public int getVersion_id() {
return version_id;
}
public void setVersion_id(int Version_id) {
this.version_id = version_id;
}
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name="product_id")
public Product getProduct() {
return product;
}
public void setProduct(Product product) {
this.product = product;
}
Пожалуйста, посоветуйте, как выполнить выше запрос в спящий режим?
В вашем столе у продукта могут быть версии «один-ко-многим» – nachokk
, во-первых, существует недостающее qhitespace между продуктом и p. – Diversity
Наши продукты бизнес-версии отличаются. У нас есть еще несколько таблиц, чтобы иметь таблицы отношений один-ко-многим для версии. Применяйте только один-к-одному – user2848031