won*_*0lt 5 java active-objects bitbucket-server
我已经分叉了一个 Atlassian Stash 插件用于构建服务器集成,它使用 ActiveObjects 组件来存储数据。我遇到以下问题:
如果我遵循其他字段并为 OneToMany 字段添加 getter 和 setter,如下所示
@OneToMany
TestMapping[] getTestMapping();
void setTestMapping(TestMapping[] powerMappings);
Run Code Online (Sandbox Code Playgroud)
使用实体时出现以下异常:
[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]
Run Code Online (Sandbox Code Playgroud)
谷歌搜索这个问题只找到了删除 setter 的解决方案,就像这篇文章中建议的那样。但是,如果配置已存在,则无法设置该字段。我不认为删除 ActiveObject 并保存新的 ActiveObject 是正确的方法。
如何解决这个问题?或者,如果不可能,如何在不使用 ActiveObjects 中的 setter 的情况下更新现有对象?
我对活动对象遵循的方法是这样的。当您有某个实体 ,A其中有许多另一个实体 ,B并且每个B对象只有其中一个时A,我添加以下片段:
在班上A:
...
@OneToMany
B[] getBs();
...
Run Code Online (Sandbox Code Playgroud)
在课堂上B:
...
A getA();
void setA(A a);
...
Run Code Online (Sandbox Code Playgroud)
请注意,类中添加的方法没有任何注释B,并且类 A 上没有任何添加的 setter 方法,类 A 位于“一对多”关系的“一”侧。这种方法总是对我有用。如果您添加了一个不在这里的方法,您添加了一个我在这里没有使用的注释,或者您错过了将其放置@OneToMany在正确的位置,那么您通常会遇到无法识别的类型异常。
我知道这确实令人沮丧,因为该异常只能让您知道您的实体接口构造得不好,但它不会让您知道问题是什么或问题出在哪里。尝试完全复制我的方法。
| 归档时间: |
|
| 查看次数: |
1039 次 |
| 最近记录: |