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分了!!请大家多帮忙
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分了!!请大家多帮忙
集合中的元素不是User对象