嵌套异常是org.hibernate.exception.SQLGrammarException:无法提取ResultSet,Spring4,Hibernate4.please帮助我

时间:2015-04-23 09:10:58

标签: hibernate spring-mvc

1.root cause

  

2015年4月23日下午2:29:04 org.apache.catalina.core.StandardWrapperValve   在上下文中为servlet [appServlet]调用SEVERE:Servlet.service()   与路径[/ bse]抛出异常[请求处理失败;嵌套   异常是org.hibernate.exception.SQLGrammarException:不能   根本原因提取ResultSet]   com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:表   ' bsedb.client'不存在于   sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)     at sun.reflect.NativeConstructorAccessorImpl.newInstance(未知   来源)at   sun.reflect.DelegatingConstructorAccessorImpl.newInstance(未知   来自java.lang.reflect.Constructor.newInstance(未知来源)     在com.mysql.jdbc.Util.handleNewInstance(Util.java:409)at   com.mysql.jdbc.Util.getInstance(Util.java:384)at   com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052)at at   com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4232)at at   com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4164)at at   com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2615)at at   com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2776)at at   com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2838)at at   com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2082)     在   com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2212)     在   org.apache.commons.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:82)     在   org.apache.commons.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:82)     在   org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:80)     在org.hibernate.loader.Loader.getResultSet(Loader.java:2065)at   org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1862)     在   org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1838)     在org.hibernate.loader.Loader.doQuery(Loader.java:909)at   org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:354)     在org.hibernate.loader.Loader.doList(Loader.java:2553)处   org.hibernate.loader.Loader.doList(Loader.java:2539)at   org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2369)at at   org.hibernate.loader.Loader.list(Loader.java:2364)

2.DaoImplation

@SuppressWarnings("unchecked")
@Transactional
@Override

public List<Client> getClientList(String searchWord) 
{

 String sql="select * from client c join clientcategory cc on c.id=cc.client_id where match(cc.clientkeyword) against(':searchKey' in boolean mode)";


     SQLQuery query = (SQLQuery) getCurrentSession().createSQLQuery(sql)
        .addEntity(Client.class)
        .setParameter("searchKey", searchWord);

        List result = query.list(); 


     return result;
}

3.model class

@Entity
@Table(name="BSE_CLIENT",uniqueConstraints = {

    @UniqueConstraint(columnNames = "ID"), 
    @UniqueConstraint(columnNames = "CLIENTEMAIL"), 
    @UniqueConstraint(columnNames = "CLIENTWEBSITE")})

public class Client {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="ID", unique=true, nullable=false)
@NotNull
private long clientId;

@Column(name = "CLIENTNAME", nullable = false)
@NotEmpty @NotNull
private String clientName;

@Temporal(TemporalType.DATE)
@Column(name = "CLIENTREGISTRATIONDATE", nullable = false)
@NotNull
private Date clientRegDate;

@Column(name = "CLIENTEMAIL", nullable = false)
@NotEmpty @Email
private String clientEmail;

@Column(name = "CLIENTWEBSITE", nullable = false)
private String clientWebsite;

@Column(name = "CLIENTPROFILE", nullable = false)
private String clientProfile;

@Column(name = "CLIENTAPPROVED", nullable = false)
@NotNull
private Boolean clientApproved;

@Temporal(TemporalType.DATE)
@Column(name = "CLIENTAPPROVEDATE", nullable = false)
@NotNull
private Date clientApprovedDate;

@Column(name = "CLIENTPASSWORD",nullable = false)
@NotNull
private String  clientPassword;

@Column(name = "CLIENTACTIVATION", nullable = false)
private String clientActivation;

@Column(name = "ADDRESSLINE1", nullable = false)
@NotNull
private String clientAddressLine1;

@Column(name = "ADDRESSLINE2", nullable = false)
private String clientAddressLine2;

@Column(name = "CLIENTCITY", nullable = false)
@NotNull
private String clientCity;

@Column(name = "CLIENTSTATE", nullable = false)
@NotNull
private String clientState;

@Column(name = "CLIENTCOUNRTY", nullable = false)
@NotNull
private String clientCountry;

@Column(name = "CLIENTPINCODE", nullable = false)
private String clientPincode;



@OneToOne(mappedBy = "client")
private ClientAccount clientAccount;

@OneToMany(mappedBy="client",fetch=FetchType.EAGER)
@Cascade({CascadeType.ALL})
private Set<ClientCategory> clientCategory;

@OneToMany(mappedBy="client",fetch=FetchType.EAGER)
@Cascade({CascadeType.ALL})
private Set<ClientContact> clientContact;

@OneToMany(mappedBy="client")
@Cascade({CascadeType.ALL})
private Set<ClientImage> clientImage;

@OneToMany(mappedBy="client")
@Cascade({CascadeType.ALL})
private Set<ClientVideo> clientVideo;

@OneToOne(mappedBy="client")
private UserClient userclient;

@OneToOne(mappedBy="client")
private CustomerClientRatings customerclientRatings;


public Client(){}


public long getClientId() {
    return clientId;
}


public void setClientId(long clientId) {
    this.clientId = clientId;
}


public String getClientName() {
    return clientName;
}


public void setClientName(String clientName) {
    this.clientName = clientName;
}


public Date getClientRegDate() {
    return clientRegDate;
}


public void setClientRegDate(Date clientRegDate) {
    this.clientRegDate = clientRegDate;
}


public String getClientEmail() {
    return clientEmail;
}


public void setClientEmail(String clientEmail) {
    this.clientEmail = clientEmail;
}


public String getClientWebsite() {
    return clientWebsite;
}


public void setClientWebsite(String clientWebsite) {
    this.clientWebsite = clientWebsite;
}


public String getClientProfile() {
    return clientProfile;
}


public void setClientProfile(String clientProfile) {
    this.clientProfile = clientProfile;
}


public Boolean getClientApproved() {
    return clientApproved;
}


public void setClientApproved(Boolean clientApproved) {
    this.clientApproved = clientApproved;
}


public Date getClientApprovedDate() {
    return clientApprovedDate;
}


public void setClientApprovedDate(Date clientApprovedDate) {
    this.clientApprovedDate = clientApprovedDate;
}


public String getClientPassword() {
    return clientPassword;
}


public void setClientPassword(String clientPassword) {
    this.clientPassword = clientPassword;
}


public String getClientActivation() {
    return clientActivation;
}


public void setClientActivation(String clientActivation) {
    this.clientActivation = clientActivation;
}


public String getClientAddressLine1() {
    return clientAddressLine1;
}


public void setClientAddressLine1(String clientAddressLine1) {
    this.clientAddressLine1 = clientAddressLine1;
}


public String getClientAddressLine2() {
    return clientAddressLine2;
}


public void setClientAddressLine2(String clientAddressLine2) {
    this.clientAddressLine2 = clientAddressLine2;
}


public String getClientCity() {
    return clientCity;
}


public void setClientCity(String clientCity) {
    this.clientCity = clientCity;
}


public String getClientState() {
    return clientState;
}


public void setClientState(String clientState) {
    this.clientState = clientState;
}


public String getClientCountry() {
    return clientCountry;
}


public void setClientCountry(String clientCountry) {
    this.clientCountry = clientCountry;
}


public String getClientPincode() {
    return clientPincode;
}


public void setClientPincode(String clientPincode) {
    this.clientPincode = clientPincode;
}


public ClientAccount getClientAccount() {
    return clientAccount;
}


public void setClientAccount(ClientAccount clientAccount) {
    this.clientAccount = clientAccount;
}


public Set<ClientCategory> getClientCategory() {
    return clientCategory;
}


public void setClientCategory(Set<ClientCategory> clientCategory) {
    this.clientCategory = clientCategory;
}


public Set<ClientContact> getClientContact() {
    return clientContact;
}


public void setClientContact(Set<ClientContact> clientContact) {
    this.clientContact = clientContact;
}


public Set<ClientImage> getClientImage() {
    return clientImage;
}


public void setClientImage(Set<ClientImage> clientImage) {
    this.clientImage = clientImage;
}


public Set<ClientVideo> getClientVideo() {
    return clientVideo;
}


public void setClientVideo(Set<ClientVideo> clientVideo) {
    this.clientVideo = clientVideo;
}


public UserClient getUserclient() {
    return userclient;
}


public void setUserclient(UserClient userclient) {
    this.userclient = userclient;
}


public CustomerClientRatings getCustomerclientRatings() {
    return customerclientRatings;
}


public void setCustomerclientRatings(CustomerClientRatings customerclientRatings) {
    this.customerclientRatings = customerclientRatings;
}

}

4

mysql数据库图片 这里的数据库也是&#39; bsedb.client&#39;在那里。

enter image description here

1 个答案:

答案 0 :(得分:1)

我认为这里的问题是表bsedb.client不存在,因为如你的sceenshot所示,表名是:

bsedb.bse_client'

这是由于这个注释:

@Table(name="BSE_CLIENT",...

所以只需将其更改为:

@Table(name="CLIENT", ...

您的查询将完美无缺。