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

Jira自定义实体类型创建与数据模型扩展技术咨询

嘿,作为长期开发Jira插件的开发者,我可以明确告诉你:完全可以扩展Jira的数据模型,添加自定义实体并关联现有Jira对象。下面针对你的几个具体问题逐一解答:

关于自定义实体扩展的可行性
  • 当然可以!Jira提供了官方机制让插件开发者添加全新的数据库实体,并且能和用户、问题、项目这些核心对象建立关联。最常用的方式是使用Atlassian的**Active Objects(AO)**框架——这是专门为Atlassian插件设计的轻量级ORM,完美适配Jira的生态。
ORM映射与数据存储
  • 不需要自己处理特殊存储结构!Active Objects会自动将你定义的实体接口映射到标准SQL表,而且会兼容Jira支持的所有数据库(MySQL、PostgreSQL、SQL Server等)。
  • 每个自定义实体对应一张独立的SQL表,表名可以通过@Table注解指定;关联现有Jira对象时,AO会自动存储对应对象的ID(比如用户的key、问题的ID),并帮你处理关联查询,不需要手动写JOIN语句。
Jira SDK的支持情况
  • Jira SDK完全支持这种扩展,Active Objects本身就是SDK的核心组件之一。你只需要在插件的pom.xml中引入AO的依赖,然后通过注解定义实体和关联关系即可。举个简单的示例:
import net.java.ao.Entity;
import net.java.ao.ManyToOne;
import net.java.ao.schema.Table;
import com.atlassian.jira.user.ApplicationUser;
import com.atlassian.jira.issue.Issue;

// 定义自定义实体,映射到CUSTOM_ASSETS表
@Table("CUSTOM_ASSETS")
public interface Asset extends Entity {
    // 自定义字段
    String getName();
    void setName(String name);

    // 关联Jira用户
    @ManyToOne
    ApplicationUser getOwner();
    void setOwner(ApplicationUser owner);

    // 关联Jira问题
    @ManyToOne
    Issue getLinkedIssue();
    void setLinkedIssue(Issue issue);
}
额外注意事项
  • 不能直接修改Jira的核心数据库表,所有自定义实体都必须是插件独立的表——这是Atlassian的安全规范,避免破坏Jira的核心数据。
  • 操作自定义实体时要遵循Jira的权限模型,比如只有有权限查看某个问题的用户,才能查看关联的自定义实体。
  • 插件升级时,如果需要修改实体结构(比如添加字段),要通过AO的迁移机制处理,避免数据丢失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:27:36