EclipseLinkのバージョンは2.5.1エンティティコンストラクタで直接プロパティをEclipseLinkで参照できますか?
GlassFish WebサーバーからTomCatに移行しました。これは、私たちを静的織りに切り替えることにしました。なぜなら、TomCatの動的織りでは、それほど簡単に機能しないからです。 静的な製織が機能するようになったので、それはかなり違った働きをしているようです。 私は、コンストラクタに直接いくつかのプロパティを設定するエンティティがある場合:このテストは失敗します
class Entity {
@Column
private String name;
public Entity() {
name = "something";
}
public String getName() {
return name;
}
}
かいつまん:
Entity e = new Entity();
assertEquals("something", e.getName()); // e.getName() returns null
をgetName()
は、織った後、もうthis.name
を返すされていないため、この問題が発生しました。代わりに、初期化のためのルーティングを呼び出し(必要な場合)、(おそらく)、いくつかの基になるHashMapからプロパティの値を取得します。 しかし、コンストラクタが織り込まれていない、私もウィーバーの情報源に見て、明示的にこれをオプトアウトすると思われている:
/**
* Construct a MethodWeaver and allow it to process the method.
*/
@Override
public MethodVisitor visitMethod(int access, String methodName, String desc, String signature, String[] exceptions) {
MethodVisitor mv = super.visitMethod(access, methodName, desc, signature, exceptions);
if (!alreadyWeaved) {
// skip constructors, they will not changed
if (!"<init>".equals(methodName) && !"<cinit>".equals(methodName)) {
// remaining modifications to the 'body' of the class are
// delegated to MethodWeaver
mv = new MethodWeaver(this, methodName, desc, mv);
}
}
return mv;
}
質問は多分私はここで何かを見逃していますか?エンティティ自身のctorで直接プロパティを使用できないことはEclipseLink 2.5.1の実際の現実ですか? (それはどこにも言及されておらず、少なくともgooglableではない)