gpt4 book ai didi

java - 在 UntypedActor Play 2.5 java 中注入(inject)变量 null

转载 作者:行者123 更新时间:2023-11-29 07:35:41 25 4
gpt4 key购买 nike

此刻我正在处理一个棘手的问题。对于我的 API,我希望使用 Play 和 Akka actor。我遇到的问题是我尝试注入(inject) Actor 的每个对象都为空。一种解决方案是将此对象注入(inject) Controller ,然后将其传递给我的 Actor ,但这不是我想要做的。我只希望我的对象在我需要它的地方。

package actors;

import actors.Messages.GetAanleverAfspraakById;
import akka.actor.UntypedActor;

import model.domain.AanleverAfspraakDO;
import play.db.jpa.JPAApi;

import javax.inject.Inject;
import javax.persistence.Query;
import java.util.Collection;

/**
* Created by harms.h on 22-03-2016.
*/
public class AfspraakActor extends UntypedActor {
@Inject
private JPAApi api;

@Override
public void onReceive(Object message) throws Exception {
if(message instanceof GetAanleverAfspraakById){
final AanleverAfspraakDO aanleverAfspraakDO = this.getAanleverAfspraakDO(((GetAanleverAfspraakById) message).getId());
getSender().tell(aanleverAfspraakDO, getSelf());
}
else{
unhandled(message);
}
}

private AanleverAfspraakDO getAanleverAfspraakDO(int id){
final AanleverAfspraakDO aanleverAfspraakDO = api.withTransaction(() -> {
final Query query = api.em().createNamedQuery("findbyid").setParameter("id", id);
final Collection<AanleverAfspraakDO> resultSet = query.getResultList();
final AanleverAfspraakDO result = resultSet.iterator().next();
return result;
});

return aanleverAfspraakDO;
}
}

我在这里做错了什么?

最佳答案

现在我在互联网上搜索了很长时间后使用了下面的代码

this.api = Play.current().injector().instanceOf(JPAApi.class);

我不确定这是否是一个干净的解决方案,你们怎么看?

关于java - 在 UntypedActor Play 2.5 java 中注入(inject)变量 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36179700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com