1

フィールドを持つエンティティがあり、作成created byした を使用してこのフィールドに入力する必要がありAuthenticatedUserServiceます。フィールドの値を生成できるように、このサービスをエンティティに挿入する必要がありcreated byます。

これは私の認証済みユーザー サービスです

@Singleton
public class AuthenticatedUserService {

@Inject
private SecurityService securityService;

public String getUserIdentifier() {
    var authentication = securityService.getAuthentication();

    return String.valueOf(authentication.get().getAttributes().get("identifier"));
}

そして、を使用してエンティティにサービスを注入してみました@Transient。しかし、これは AuthenticatedUserService のインスタンスに対して NullPointerException を返します。実体はこんな感じ。

@Entity(name = "car")
public class Car {
...
private String createdBy;

@Transient
@Inject
AuthenticatedUserService authenticatedUserService;

...  

 @PrePersist
 public void prePersist() {
    this.createdBy = authenticatedUserService.getUserIdentifier();
 }
}

Micronaut によって管理されていないクラス内で AuthenticatedUserService を使用する方法はありますか?

私はこのようなことをしたいのですが、Micronautで。

4

1 に答える 1