javax.ejb.EJBException : java. rmi.MarshalException

标签 java mysql select jdbc stateless-session-bean

我的问题是当我尝试创建甚至查看积分包时出现的错误消息。

这是我在 glassfish 中遇到的错误消息。

Caused by: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.1.v20150605-31e8258): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'ABOUT' in 'field list'
Error Code: 1054
Call: SELECT CREDITID, ABOUT, CREDITS, NAME, PACKAGECODE FROM CREDITPACKAGE
Query: ReadAllQuery(referenceClass=CreditPackage sql="SELECT CREDITID, ABOUT, CREDITS, NAME, PACKAGECODE FROM CREDITPACKAGE")

来 self 自己的管理客户端的错误消息

Caused by: javax.ejb.EJBException: java.rmi.MarshalException: CORBA MARSHAL 1330446393 Maybe; nested exception is: 
    org.omg.CORBA.MARSHAL: WARNING: 00810057: Could not load class com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException  vmcid: OMG  minor code: 57 completed: Maybe
    at ejb.session.stateless._CreditPackageControllerRemote_Wrapper.retrieveAllCreditPackage(ejb/session/stateless/_CreditPackageControllerRemote_Wrapper.java)

这些列已被考虑在内,但我不确定为什么它说“字段列表”中的未知列“关于”

@Entity
public class CreditPackage implements Serializable {

private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long creditId;
@Column(unique = true)
private String packageCode;
@Column(length = 32, nullable = false)
private String name;
@Column(length = 32, nullable = false)
private String about;   //already tried escaping the column name using `` and backslashes 
@Column(nullable = false, precision = 18, scale = 4)
private BigDecimal credits;
}

这个方法在 Controller sessionbean中

@Override
public List<CreditPackage> retrieveAllCreditPackage() {
    Query query = em.createQuery("SELECT s FROM CreditPackage s");  //Not too sure if this is correct
    return query.getResultList();

}

感谢您阅读本文!希望有人能帮我解决这个问题。

最佳答案

在其他人的帮助下设法解决了这个问题。 事实证明,当我添加一些新列时,我没有重新生成 JDBC 数据库,因此旧列仍然存在。因此异常(exception)。

所以我所做的是:

  1. 删除 JDBC 数据库中的所有表
  2. 重新部署了我的应用系统
  3. 运行我的应用程序客户端。

然后错误就解决了,因为它根据新列在 JDBC 数据库中重新生成了新表。

希望对其他人有帮助。谢谢您阅读此篇。 :)

关于javax.ejb.EJBException : java. rmi.MarshalException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46860555/

相关文章:

java - 关于java中的聊天客户端-服务器程序

java - 如何在 netbeans JFrame 编辑器中显示自定义对话框?

mysql - 如何在不搞砸第一个表中的总值的情况下对连接表中的值求和?

mysql - MAC OSX,我应该下载哪个版本的 MySQL?

c - FD_SET 从无效内存地址读取?

Jquery.Validate 基于条件

java - AWS Java Lambda JVM 实例

linux - Linux 的 Oracle JDK 链接是否断开?

php - 如何让数组的元素在点击提交按钮后一次出现一个?

javascript - 当复选框被选中/取消选中时触发函数?