You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在NetBeans中用GlassFish与Derby搭建Jakarta EE遇多类问题求解决

Jakarta EE + GlassFish + Derby 问题解决方案

1. IDE选择适配问题

虽IntelliJ需订阅、Eclipse的GlassFish插件已归档,但NetBeans是当前可行选择,需注意版本匹配:

  • 确保NetBeans版本与Jakarta EE、GlassFish兼容:NetBeans 17+ 支持Jakarta EE 9/10,搭配GlassFish 6/7;
  • 安装NetBeans时选择"Java EE"或"Jakarta EE"组件包,自动关联GlassFish与Derby的基础配置。

2. java.lang.ClassNotFoundException: org.apache.derby.jdbc.Clientdriver 异常

核心问题是驱动类名拼写错误+驱动包未正确加载:

  • 修正驱动类名:正确类名为 org.apache.derby.jdbc.ClientDriver(注意Driver首字母大写);
  • 确保Derby客户端驱动包加载:
    • 项目层面:NetBeans右键项目 → Libraries → Add Library → 选择"Java DB Driver"(NetBeans自带Derby驱动);
    • 服务器层面:将derbyclient.jar复制到GlassFish安装目录下的domains/domain1/lib/ext文件夹,重启GlassFish。

3. javax.persistence.RollbackException: Transaction "rolled back" because transaction was set to RollbackOnly 异常

事务被强制回滚的本质是执行过程中出现未捕获异常,导致JPA自动标记事务回滚:

  • 查看GlassFish服务器日志(domains/domain1/logs/server.log),定位触发回滚的根异常(如SQL错误、实体映射错误);
  • 检查@Transactional修饰的方法,确保内部异常被捕获处理,避免未检查异常抛出;
  • 若需强制提交(仅确认无数据一致性问题时使用),可通过UserTransaction手动清除回滚标记:
    UserTransaction ut = (UserTransaction) new InitialContext().lookup("java:comp/UserTransaction");
    if (ut.getStatus() == Status.STATUS_MARKED_ROLLBACK) {
        ut.setRollbackOnly(false);
    }
    ut.commit();
    
  • 验证persistence.xml事务配置:使用JTA时确保<transaction-type>JTA</transaction-type>,数据源配置正确。

4. java.sql.SQLSyntaxErrorException: Table/View 'CUSTOMER' does not exist 异常

表存在但报错找不到,大概率是大小写匹配问题或连接库错误:

  • 检查表名大小写:Derby默认区分标识符大小写,若数据库中表为小写customer,而JPA实体用大写CUSTOMER会导致找不到:
    • 方案1:修改实体类@Table注解,指定正确表名:@Table(name = "customer");
    • 方案2:在persistence.xml中添加全局引号配置(以Hibernate为例):
      <property name="hibernate.globally_quoted_identifiers" value="true"/>
      
  • 确认连接的数据库实例:检查persistence.xml中的JDBC URL,确保指向正确的Derby数据库(如jdbc:derby://localhost:1527/YourDBName);
  • 禁用JPA自动建表冲突:若手动创建了表,将persistence.xml中的hibernate.hbm2ddl.auto设为none或validate,避免自动删除重建表。

内容的提问来源于stack exchange,提问作者Guillem Chesa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 23:15:06