【发布时间】:2016-02-17 03:54:17
【问题描述】:
我正在尝试持久化一个实体。当我使用本机查询向我的表中插入一行时,它可以正常工作,但是当我使用 EntityManager 持久方法插入实体时,我收到一个错误,抱怨查询好像它在语法上是错误的。
下面是我的实体类:
import javax.persistence.*;
import java.util.Date;
@Entity
public class Media {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Column(name = "media_location")
private String mediaLocation;
@Column(name = "media_location_url")
private boolean fromUrl = false;
@Column(name = "date")
private Date uploadDate;
@Column(name = "description")
private String description;
public Media() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getMediaLocation() {
return mediaLocation;
}
public void setMediaLocation(String mediaLocation) {
this.mediaLocation = mediaLocation;
}
public boolean isFromUrl() {
return fromUrl;
}
public void setFromUrl(boolean fromUrl) {
this.fromUrl = fromUrl;
}
public Date getUploadDate() {
return uploadDate;
}
public void setUploadDate(Date uploadDate) {
this.uploadDate = uploadDate;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
我的经理班如下:
@Stateless
public class UserManager {
@EJB
private BaseDao baseDao;
public String createNewMedia_test() {
Media media = new Media();
media.setFromUrl(false);
media.setDescription("adsddfsd");
media.setMediaLocation("here");
media.setUploadDate(new Date());
baseDao.saveMedia(media);
return "OK";
}
}
BaseDao 如下:
@Stateless
public class BaseDao {
@PersistenceContext(unitName="MySqlDS")
private EntityManager entityManager;
public void saveMedia(Media media) {
entityManager.persist(media);
}
}
但是在持久调用时我得到了错误,在我的本地主机 web ui 中,我看到堆栈跟踪以
开头Query String:null
Stack Trace
javax.ejb.EJBException: javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
【问题讨论】:
-
能否将Hibernate属性
hibernate.show_sql设置为true,然后查看正在执行的查询。 -
我应该在哪里指定这个?
-
在您的 persistence.xml 配置文件中,请参阅 docs.jboss.org/hibernate/entitymanager/3.5/reference/en/html/…
-
我现在可以看到查询了。但是在执行持久化时,consol 中打印的都是 Hibernate:调用 hibernate_sequence 的下一个值,然后出现错误和堆栈跟踪。