以下getBlog 方法中为何在
Query query = session.createQuery("from Blog blog left join Links links where blog.username=links.name and blog.username=:userId");
语句时报:org.hibernate.hql.ast.QuerySyntaxException: Path expected for join! [from blogs.Blog blog left join Links links where blog.username=links.name and blog.username=:userId] 请位这是为什么?先谢了!!!!!! ----------方法如下------------------
/**
* 使用外连接方式进行多表查询处理
*/
public Blog getBlog (String userId) throws HibernateException {
Session session = HibernateUtil.currentSession();
List alist = new ArrayList();
Blog blog = null;
Transaction tx = null;
try {
tx = session.beginTransaction();
Query query = session.createQuery("from Blog blog left join Links links where blog.username=links.name and blog.username=:userId");
query.setParameter("userId", userId);
alist=query.list();
if (!alist.isEmpty())
blog = (Blog) alist.get(0); tx.commit();
} catch (HibernateException e) {
if (tx != null)
tx.rollback();
e.printStackTrace();
throw e;
}
session.close();
return blog;
}
--------------持久化类---
public class Blog {
private int id;
private String username;
private String password;
private String subject;
private String email;
private String image;
private int visitcount;
//应构造方法是用于取一个表中部份列而用的确
public Blog(String userName,String password) {
this.username = userName;
this.password = password;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getVisitcount() {
return visitcount;
}
public void setVisitcount(int visitcount) {
this.visitcount = visitcount;
}
}
---持久化类---
public class Links {
private int id;
private String name;
private String url;
private int blogid;
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 int getBlogid() {
return blogid;
}
public void setBlogid(int blogid) {
this.blogid = blogid;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
------------XML配置如下----
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="blogs"> <class name="blogs.Blog"
table="blog"
discriminator-value="C">
<id name="id">
<generator class="increment"/>
</id> <property name="username"/>
<property name="password"/>
<property name="subject"/>
<property name="email"/>
<property name="image"/>
<property name="visitcount"/>
</class>
<class name="blogs.Links"
table="links"
discriminator-value="C">
<id name="id">
<generator class="increment"/>
</id> <property name="name"/>
<property name="url"/>
<property name="blogid"/>
</class>
</hibernate-mapping>
Query query = session.createQuery("from Blog blog left join Links links where blog.username=links.name and blog.username=:userId");
语句时报:org.hibernate.hql.ast.QuerySyntaxException: Path expected for join! [from blogs.Blog blog left join Links links where blog.username=links.name and blog.username=:userId] 请位这是为什么?先谢了!!!!!! ----------方法如下------------------
/**
* 使用外连接方式进行多表查询处理
*/
public Blog getBlog (String userId) throws HibernateException {
Session session = HibernateUtil.currentSession();
List alist = new ArrayList();
Blog blog = null;
Transaction tx = null;
try {
tx = session.beginTransaction();
Query query = session.createQuery("from Blog blog left join Links links where blog.username=links.name and blog.username=:userId");
query.setParameter("userId", userId);
alist=query.list();
if (!alist.isEmpty())
blog = (Blog) alist.get(0); tx.commit();
} catch (HibernateException e) {
if (tx != null)
tx.rollback();
e.printStackTrace();
throw e;
}
session.close();
return blog;
}
--------------持久化类---
public class Blog {
private int id;
private String username;
private String password;
private String subject;
private String email;
private String image;
private int visitcount;
//应构造方法是用于取一个表中部份列而用的确
public Blog(String userName,String password) {
this.username = userName;
this.password = password;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getVisitcount() {
return visitcount;
}
public void setVisitcount(int visitcount) {
this.visitcount = visitcount;
}
}
---持久化类---
public class Links {
private int id;
private String name;
private String url;
private int blogid;
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 int getBlogid() {
return blogid;
}
public void setBlogid(int blogid) {
this.blogid = blogid;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
------------XML配置如下----
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="blogs"> <class name="blogs.Blog"
table="blog"
discriminator-value="C">
<id name="id">
<generator class="increment"/>
</id> <property name="username"/>
<property name="password"/>
<property name="subject"/>
<property name="email"/>
<property name="image"/>
<property name="visitcount"/>
</class>
<class name="blogs.Links"
table="links"
discriminator-value="C">
<id name="id">
<generator class="increment"/>
</id> <property name="name"/>
<property name="url"/>
<property name="blogid"/>
</class>
</hibernate-mapping>
解决方案 »
- <logic:equal> 比较2个变量问题,急,请各位帮帮忙,小弟不甚感激~
- 哪里有论坛源代码下(jsp的)?
- servlet部属到服务器上面运行一段时间后遇到问题
- 一个关于struts 从页面往ACTION 传值的问题 小弟真是没分了...
- org.springframework.jdbc.UncategorizedSQLException问题
- 如何实现打印功能?
- target is null for method getBean
- JavaMail用IMAPFolder.getMessageByUID来获取QQ邮箱的邮件时有问题!!!
- jdbc连接mysql的问题
- 有谁参加过JVM的设计和编写吗?
- 一个新兴热门Java网站
- webservice linux无法访问
行报错:
org.hibernate.QueryException: could not resolve property: Links of: blogs.Blog [select blog.username,links.url from blogs.Blog blog left join blog.Links links where blog.username=:userId]
at org.hibernate.persister.entity.AbstractPropertyMapping.throwPropertyException(AbstractPropertyMapping.java:43).
.
.
public List getBlog(String userId) throws HibernateException {
Session session = HibernateUtil.currentSession();
List alist = new ArrayList();
Transaction tx = null;
try {
tx = session.beginTransaction();
Query query = session.createQuery("select blog.username,links.url from Blog blog left join blog.Links links where blog.username=:userId");
query.setParameter("userId", userId);
Iterator it =query.list().iterator();
while(it.hasNext()){ Object[] row = (Object[])it.next();
String username = (String) row[0];
String url = (String) row[1];
System.out.println("username=="+username+"=url="+url); }
tx.commit();
} catch (HibernateException e) {
if (tx != null)
tx.rollback();
e.printStackTrace();
throw e;
}
session.close();
return alist;
}