問題タブ [javers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
641 参照

javers - 参照変更内の値変更の差分

Application エンティティと User エンティティがあります。アプリケーションからユーザーへは 1 対多の関係があります。つまり、1 つのアプリケーションが複数のユーザーを持つことができます。
ユーザーを更新し、割り当てられたアプリケーションを変更します。これまでのところ、私は以下を持っています:


デバッグ中に以下の結果を見つけてください
。 Application/7', newRef:'com.ds.appmanager.services.domain.Application/3'}
oldRef
アプリケーション [applicationId=7, applicationName=KYC, applicationDesc=DEV_TEST, applicationLaunch=2016-12-31 00:00:00.0 , live=false]
newRef
アプリケーション [applicationId=3, applicationName=KYC, applicationDesc=help, applicationLaunch=Sat Mar 12 00:00:00 IST 2016, live=true]

両方のオブジェクトを javars.compare(oldRef,newRef) に渡すと、referenceChangesと同じ結果が得られます。applicationDesc、oldVal = DEV_TEST、newVal = hellp など、各プロパティの値の変更が表示されるはずだと思いました。

ここで何か不足していますか?私がやりたいことは、User オブジェクト内で参照される Application オブジェクトのプロパティの値の変更を取得することだけです。

PS: に変更Object oldRef = referenceChange.getLeftObject().get();するとObject oldRef = referenceChange.getLeftObject();JaversException: CLASS_EXTRACTION_ERROR JaVers bootstrap error - Don't know how to extract Class from type 'T'.

更新
Debug を実行しているときに ValueChanges を取得していないことに注意してください
Diff refDiff = javers.compare(oldRef,newRef);
。次の変更が表示されます。

1. NewObject{globalId:'com.ds.appmanager.services.domain.Application/7'}
2. ObjectRemoved{globalId:'com.ds.appmanager.services.domain.User/5'}
3. ObjectRemoved{globalId: 'com.ds.appmanager.services.domain.Application/3'}
4.ObjectRemoved{globalId:'com.ds.appmanager.services.domain.User/6'}
5.ObjectRemoved{globalId:'com.ds.appmanager .services.domain.User/7'}
6. ReferenceChange{globalId:'com.ds.appmanager.services.domain.User/3', property:'application', oldRef:'com.ds.appmanager.services.domain .Application/3', newRef:'com.ds.appmanager.services.domain.Application/7'}

0 投票する
1 に答える
241 参照

mybatis - Javars と MyBatis の統合に関するヘルプが必要

MyBatis と Javars (Spring を使用) を統合して動作させるのに問題があります。http://javers.org/documentation/spring-integration/の指示に従い、Aspect のセットアップを取得し、エンティティ クラスにアノテーションを付けて Javars に登録し、MyBatis インターフェースに @Repository と @JaversAuditable で正しくアノテーションを付けました適切な方法ですが、まだ動作していません。Javars アスペクトにブレークポイントを設定しても、何もトリガーされません。

また、 http://www.mybatis.org/mybatis-3/configuration.html#pluginsに従って、MyBatis プラグイン インターセプターを使用して別の方法で行ったこともあります(その後、http://www.mybatis.org/を使用しました)。コミットの基本的な例としてspring/xref-test/org/mybatis/spring/ExecutorInterceptor.htmlを参照してください)。しかし、それがトリガーされている間、それは私が期待したことをしていません。基本的には、どのエンティティがコミットされているかを含むのではなく、ブール値を取る commit メソッドの側面にすぎません。update/insert MyBatis メソッドにインターセプターを追加し、それを ThreadLocal などに保存して、コミット/ロールバックが呼び出されたときに必要に応じて Javars に渡すことができると思いますが、それは面倒です。

これらの 2 つの方法のいずれかで見逃したものを誰かが見ることができない限り、ここからどこへ行くべきかわかりません。

0 投票する
2 に答える
384 参照

javers - Javars が利用可能なすべての接続を取得しています

私が見つけたもう 1 つのことは、Javars が接続プール (Spring DataSourceBuilder によって作成された) から使用可能なすべての接続を取得しているように見えることです。私は Hibernate/JPA を使用していません。JdbcTemplate を介して直接 JDBC を使用し、エンティティ クエリにはほとんど MyBatis を使用しています。

Java の ConnectionProvider にログ ステートメントを追加しました。アプリケーションの開始時にスキーマをクエリすると、4 つの接続がプルされて各テーブルがチェックされ、コミット後もそれらのいずれも返されません。 PlatformTransactionManager から。

https://stackoverflow.com/a/35147884/570291から、現在のトランザクションと同じ接続に参加することになっていることを理解しています。私は Hibernate/JPA を使用していないので、MyBatis から Javars ConnectionProvider への接続追跡などを実装して、同じ接続 (存在する場合) を返し、その後 (プールに戻る) クローズを処理する必要があるということですか?トランザクションの終わりにその接続の?

0 投票する
2 に答える
777 参照

spring - Spring AOP、例外がスローされたときに @JaversAuditable が変更をコミットしようとしている

これは、Spring 4.1.9.RELEASE、Spring-Data 1.11.4.RELEASE、Spring 統合された Javars 1.6.0 にあります。

そのため、Spring を使用して@JaversAuditable、挿入しようとしたときに例外が処理された場合 (重複キー例外など)、JaversTransactionalDecorator引き続き先に進み、コミットを生成しようとすることがわかりました。

ただし、挿入が失敗したためにエンティティに ID がないため、Javars は例外をスローしてしまいます (以下を参照)。デバッグをステップ実行するorg.springframework.aop.aspectjAspectJAfterAdvice.invoke()と、finally ブロックに行き着くことがわかりました。次に、 を呼び出します。invokeAdviceMethod(JoinPointMatch,null,null)その 3 番目nullは のスポットですThrowable

http://docs.spring.io/spring/docs/4.1.9.RELEASE/spring-framework-reference/html/aop.htmlによると@After、メソッドが正常に存在するか、または例外。したがって、Javars は、例外がスローされたかどうかを検出できる必要があるように思えます。または@AfterReturning、別の@AfterThrowing. @After現在、Javers が ( ) 例外/throwable がスローされたかどうかを検出する方法を見つけようとしてorg.javers.spring.auditable.aspect.JaversAuditableRepositoryAspect.commitAdvice(JoinPoint pjp)いますが、それに関するドキュメントには何も見つからないようです。

それで、これはJavarsがすでに持っているものですが、何らかの理由でスローされたSQL例外を正しく検出していませんか、またはスローさ@Afterれた例外/スロー可能なものをアドバイスで検出するための情報はどこにありますか?

申し訳ありませんが、非常に整理されていない可能性があります。通常より数時間遅れてここにいます。

0 投票する
3 に答える
2014 参照

javers - ネストされた ValueObject の変更を取得するには?

次のクラス階層があります。

どこ

次のテストを(groovyで)作成しました:

このテストの結果は次のとおりです。

この方法で変更を取得しようとしています

空のリストを返します。

Javars はネストされた ValueObject の変更の選択をサポートしていますか?

0 投票する
1 に答える
426 参照

javers - javas でプロパティ名をカスタマイズする方法

エンティティのプロパティ名をカスタマイズできる方法はありますか?

クラス名を変更するためのアノテーション @TypeName があります。

フィールドに特定の注釈はありますか?