java - 为数组字段添加 setter 时 ActiveObjects 抛出异常

标签 java bitbucket-server active-objects

我已经 fork 了一个 Atlassian Stash 插件用于构建服务器集成,它使用 ActiveObjects 组件来存储数据。我遇到以下问题:

如果我遵循其他字段并为我的 OneToMany 字段添加 getter 和 setter,如下所示

@OneToMany
TestMapping[] getTestMapping();
void setTestMapping(TestMapping[] powerMappings);

使用实体时出现以下异常:

[INFO] [talledLocalContainer] Caused by: java.lang.RuntimeException: Unrecognized type: [Lsome.package.TestMapping;
[INFO] [talledLocalContainer]   at net.java.ao.types.TypeManager.getType(TypeManager.java:68) ~[na:na]
[INFO] [talledLocalContainer]   at net.java.ao.schema.SchemaGenerator.getSQLTypeFromMethod(SchemaGenerator.java:481) ~[na:na]

谷歌搜索这个问题只找到了删除setter的解决方案,如this post中建议的那样。但是,如果配置已存在,则无法设置该字段。我不认为删除 ActiveObject 并保存新的 ActiveObject 是可行的方法。

如何解决这个问题?或者,如果不可能,如何在不使用 ActiveObjects 中的 setter 的情况下更新现有对象?

最佳答案

我对 Activity 对象遵循的方法是这样的。当您有某个实体 A,其中有许多另一个实体 B,并且每个 B 对象只有一个 A ,我添加这些片段:

A类中:

...

@OneToMany
B[] getBs();

...

B类中:

...

A getA();
void setA(A a);

...

请注意,B 类中添加的方法没有任何注释,并且 A 类(位于“一”侧的类)上没有任何添加的 setter 方法的“一对多”关系。这种方法总是对我有用。如果您添加了一个不在这里的方法,您添加了一个我在这里没有使用的注释,或者您错过了将 @OneToMany 放置在正确的位置,那么您通常会得到一个无法识别的类型异常(exception)。

我知道这确实令人沮丧,因为该异常只能让您知道您的实体接口(interface)构造得不好,但它不会让您知道问题是什么或问题出在哪里。尝试完全复制我的方法。

关于java - 为数组字段添加 setter 时 ActiveObjects 抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32967137/

相关文章:

java - 错误: incompatible types: String cannot be converted to URI

java - Android信号分析+一些过滤器

java - 从 mysql workbench 中删除所有帐户限制

git - pull 请求和分支有什么区别?

Python 失败后继续执行脚本

c++ - 事件对象的返回值

java - appspot.com 上的 Oauth 2.0

php - 推送到 BitBucket 后自动 pull 生产服务器

c++ - 与线程相关的事件对象设计问题(c++ boost)

java - Activity 对象中两列组合的唯一约束