javax.ejb.EJBException: java.rmi.MarshalException
javax.ejb.EJBException: java.rmi.MarshalException
我的问题是关于在我尝试创建甚至查看积分包时出现的错误消息。
这是我在 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")
来自我自己的管理客户端的错误消息
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)
这些列已说明,但我不确定为什么它在 'field list'
中显示未知列 'ABOUT'
@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 数据库,因此旧列仍然存在。因此例外。
所以我所做的是:
- 删除JDBC数据库中的所有表
- 重新部署我的应用程序系统
- 运行我的应用客户端。
然后错误解决了,因为它根据新列在JDBC 数据库中重新生成了新表。
希望对大家有所帮助。谢谢您阅读此篇。 :)
我的问题是关于在我尝试创建甚至查看积分包时出现的错误消息。
这是我在 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")
来自我自己的管理客户端的错误消息
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)
这些列已说明,但我不确定为什么它在 'field list'
中显示未知列 'ABOUT'@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 数据库,因此旧列仍然存在。因此例外。
所以我所做的是:
- 删除JDBC数据库中的所有表
- 重新部署我的应用程序系统
- 运行我的应用客户端。
然后错误解决了,因为它根据新列在JDBC 数据库中重新生成了新表。
希望对大家有所帮助。谢谢您阅读此篇。 :)