首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

求一hibernate关联查询语句!该怎么处理

2012-03-24 
求一hibernate关联查询语句!!!!!package angel.domainpublic class Account {private Long oidprivate S

求一hibernate关联查询语句!!!!!
package angel.domain;

public class Account {
private Long oid;
private String actNo;
private double bal;
private User owner;

public User getOwner() {
return owner;
}

public void setOwner(User owner) {
this.owner = owner;
}

public Account() {
super();
}

public Account(String actNo, double bal) {
super();
this.actNo = actNo;
this.bal = bal;
}
  public void withdraw(double amount){
  if(bal-amount>=0){
  bal = bal - amount;
  }
  }
  public void deposite(double amount){
  bal = bal + amount;
  }
public Long getOid() {
return oid;
}

public void setOid(Long oid) {
this.oid = oid;
}

public String getActNo() {
return actNo;
}

public void setActNo(String actNo) {
this.actNo = actNo;
}

public double getBal() {
return bal;
}

public void setBal(double bal) {
this.bal = bal;
}

@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((actNo == null) ? 0 : actNo.hashCode());
return result;
}

@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Account other = (Account) obj;
if (actNo == null) {
if (other.actNo != null)
return false;
} else if (!actNo.equals(other.actNo))
return false;
return true;
}
}

Account
<?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="angel.domain">
  <class name="Account" table="t_acct_one2many">
  <id name="oid" column="OID">
  <!--<generator class="seqhilo" />-->
  <generator class="native" />
  </id>
  <property name="actNo"
  column="ACTNO"
  not-null="true"
  unique="true" />
  <property name="bal"
  column="BALANCE"
  not-null="true" />
   
  <many-to-one name="owner"
  column="FID" />
   
   
   
   
   
   
  </class>
</hibernate-mapping>


package angel.domain;

import java.util.HashSet;
import java.util.Set;

public class User {
private Long oid;
private String uid;
private String name;
  private Set accts = new HashSet();

public void addAcct(Account acct){
accts.add(acct);
acct.setOwner(this);
}

public Set getAccts() {
return accts;
}

public void setAccts(Set accts) {
this.accts = accts;
}

public User() {
super();
}

public User(String uid, String name) {
super();
this.uid = uid;
this.name = name;
}

public Long getOid() {
return oid;
}



public void setOid(Long oid) {
this.oid = oid;
}

public String getUid() {
return uid;
}

public void setUid(String uid) {
this.uid = uid;
}

public String getName() {
return name;
}

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

User
<?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="angel.domain">
  <class name="User" table="t_user_one2many">
  <id name="oid" column="OID"><!--
  <generator class="seqhilo" />
  -->
  <generator class="native" />
  </id>
  <property name="uid"
  column="USER_ID"
  not-null="true"
  unique="true" />
  <property name="name"
  column="USER_NAME"
  not-null="true" />
   
  <set name="accts" inverse="false" cascade="all" lazy="false" fetch="select">
  <key column="FID" />
  <one-to-many class="Account" />
  </set>  
   
  </class>
  </hibernate-mapping>



HibernateTemplate ht;
public void init(){
ht=this.getHibernateTemplate();
}
public List<User> findAllUser() {
// TODO Auto-generated method stub
String hql="select u.name from User user left join Account acc on user.oid=acc.fid where acc.actNo = ''";
return ht.find(hql);
  }

这个findAllUser方法调用有错
log
ERROR org.hibernate.hql.PARSER - line 1:63: unexpected token: on
Exception in thread "main" org.springframework.orm.hibernate3.HibernateQueryException: unexpected token: on near line 1, column 63 [select user.name from angel.domain.User user join Account acc on user.oid=acc.fid]; nested exception is org.hibernate.hql.ast.QuerySyntaxException: unexpected token: on near line 1, column 63 [select user.name from angel.domain.User user join Account acc on user.oid=acc.fid]
at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:642)
at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:424)
at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:917)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:909)
at angel.dao.UserDaoImpl.findAllUser(UserDaoImpl.java:23)
at angel.service.UserServiceImpl.QueryAll(UserServiceImpl.java:21)
at angel.test.Test.main(Test.java:59)

请高手帮我解决下????

小弟只剩下20分了!!请大家多帮忙

[解决办法]
那个hql写的有问题吧?="select user.name from User user left join Account acc on user.oid=acc.fid where acc.actNo = ''" 是这个问题不 试试
[解决办法]
你的那条语句是投影查询
集合中的元素不是User对象

热点排行