【问题标题】:nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet ,Spring4,Hibernate4.please help me out嵌套异常是 org.hibernate.exception.SQLGrammarException: could not extract ResultSet ,Spring4,Hibernate4.please help me out
【发布时间】:2015-07-01 08:44:38
【问题描述】:

1.根本原因

2015 年 4 月 23 日下午 2:29:04 org.apache.catalina.core.StandardWrapperValve 在上下文中为 servlet [appServlet] 调用 SEVERE: Servlet.service() 带路径 [/bse] 抛出异常 [请求处理失败;嵌套的 异常是 org.hibernate.exception.SQLGrammarException: could not 提取 ResultSet] 的根本原因 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:表 'bsedb.client' 不存在于 sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(未知 来源)在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(未知 来源)在 java.lang.reflect.Constructor.newInstance(未知来源) 在 com.mysql.jdbc.Util.handleNewInstance(Util.java:409) 在 com.mysql.jdbc.Util.getInstance(Util.java:384) 在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052) 在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4232) 在 com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4164) 在 com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2615) 在 com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2776) 在 com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2838) 在 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) 在 org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1862) 在 org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1838) 在 org.hibernate.loader.Loader.doQuery(Loader.java:909) 在 org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:354) 在 org.hibernate.loader.Loader.doList(Loader.java:2553) 在 org.hibernate.loader.Loader.doList(Loader.java:2539) 在 org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2369) 在 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.模型类

@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数据库镜像 这里在数据库中也有“bsedb.client”。

【问题讨论】:

    标签: hibernate spring-mvc


    【解决方案1】:

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

    bsedb.bse_client'
    

    这是由于这个注释:

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

    所以只需将其更改为:

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

    您的查询将完美运行。

    【讨论】:

    • 太好了,很高兴它有帮助。
    猜你喜欢
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 2018-02-04
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 2015-06-25
    相关资源
    最近更新 更多