gpt4 book ai didi

java - 尝试使用生成的命名查询时出现 sqlException 错误

转载 作者:太空宇宙 更新时间:2023-11-03 12:15:49 25 4
gpt4 key购买 nike

我创建了一个 bean:

package beans;

import java.util.List;

import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import mazeJPA.Forumcategory;

/**
* Session Bean implementation class ForumBean
*/
@Stateless
@LocalBean
public class ForumBean
{

@PersistenceContext(unitName = "mazeEJB")
private EntityManager em;

/**
* Default constructor.
*/
public ForumBean(){}


public List<Forumcategory> getCategories()
{
return em.createNamedQuery
(
"Forumcategory.findAll", Forumcategory.class
).getResultList();
}
}

及其实体类

package mazeJPA;

import java.io.Serializable;
import javax.persistence.*;


/**
* The persistent class for the forumcategory database table.
*
*/
@Entity
@Table(name="forumcategory")
@NamedQuery(name="Forumcategory.findAll", query="SELECT f FROM Forumcategory f")
public class Forumcategory implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int cid;

private String desc;

private String name;

public Forumcategory() {
}

public int getCid() {
return this.cid;
}

public void setCid(int cid) {
this.cid = cid;
}

public String getDesc() {
return this.desc;
}

public void setDesc(String desc) {
this.desc = desc;
}

public String getName() {
return this.name;
}

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

当我从我的 servlet 调用 getCategories() 时,我得到一个 sql 异常:

 Internal Exception:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an
error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near 'DESC, NAME FROM
forumcategory' at line 1 Error Code: 1064 Call: SELECT CID, DESC, NAME
FROM forumcategory Query: ReadAllQuery(name="Forumcategory.findAll"
referenceClass=Forumcategory sql="SELECT CID, DESC, NAME FROM
forumcategory")

我的 table 是:

  cid INT NOT NULL, name VARCHAR(255) NOT NULL, desc TEXT NOT NULL,
PRIMARY KEY (cid)

我不知道为什么会这样。我的映射有问题吗?我最近才将此添加到我的项目中,与它有什么关系,即我是否必须一次生成所有表?

最佳答案

DESC 是一个 reserved sql word,所以你必须将它转义,例如使用 desc

SELECT CID, `DESC`, NAME FROM ...

关于java - 尝试使用生成的命名查询时出现 sqlException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22269839/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com