我有一个与同一Parcel类有2个关系,但对象不同的实体:
@Entity
public class Parcel implements Serializable
{
@Id
@GeneratedValue
@Column
private Long id;
@OneToOne( mappedBy = "parcelSender", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private Place sender;
@OneToOne( mappedBy = "parcelRecipient", cascade = CascadeType.ALL, fetch = FetchType.EAGER )
private Place recipient;
//getters, setters, etc.
}
Run Code Online (Sandbox Code Playgroud)
Place 实体:
@Entity
public class Place implements Serializable
{
@Id
@GeneratedValue
@Column
private Long id;
@OneToOne
@PrimaryKeyJoinColumn
private Parcel parcelSender;
@OneToOne
@PrimaryKeyJoinColumn
private Parcel parcelRecipient;
//getters, setters
}
Run Code Online (Sandbox Code Playgroud)
如果看到的话,我@OneToOne与Place对象有2个关系。一切工作几乎都很好-当我使用REST持久化对象时,我得到了发件人和收件人正确的JSON响应。当我想要补丁 …
我创建了两条Http4s路线:
class FirstRoutes[F[_] : Async](service: FirstService[F]) extends Http4sDsl[F] {
def routes: HttpRoutes[F] = HttpRoutes.of[F] {
//... some code
}
}
class SecondRoutes[F[_] : Async] extends Http4sDsl[F] {
def routes: HttpRoutes[F] = HttpRoutes.of[F] {
//... some code
}
}
Run Code Online (Sandbox Code Playgroud)
现在在我的main方法中,我想这样称呼这条路线:
override def run(args: List[String]): IO[ExitCode] =
for {
_ <- {
val app = {
//...
val firstRoutes = new FirstRoutes[F](someService)
val secondRoutes = new SecondRoutes[F]
(firstRoutes.routes <+> secondRoutes.routes).orNotFound
}
Run Code Online (Sandbox Code Playgroud)
但是当我编译这段代码时,我得到了一个错误:
Error:(26, 33) value <+> is not …Run Code Online (Sandbox Code Playgroud) 我创建了两个版本的服务。第一个使用Futures,另一个使用ZIO效果。
我有一个简单的方法,使用Future结果效果:
def get(id: String)(implicit executionContext: ExecutionContext): Future[Data]
Run Code Online (Sandbox Code Playgroud)
我还有一些其他版本使用ZIO[SomeEnv, SomeError, Data]:
def get(id: String): ZIO[SomeEnv, SomeError, Data]
Run Code Online (Sandbox Code Playgroud)
现在,我需要创建某种适配器,它将从一个版本或另一个版本返回数据:
def returnDataFromServiceVersion(version: Int) : ??? = {
if(version == 1) futureService.get(...)
else zioService.get(...)
}
Run Code Online (Sandbox Code Playgroud)
这里的问题是返回类型。我不知道如何转换ZIO为未来或Future转换ZIO为具有共同的返回类型。我尝试使用ZIO.fromFuture{...}ortoFuture()但没有帮助。我的问题是 - 如何创建此returnDataFromServiceVersion方法以将其与这两种服务一起使用?我需要在这里有共同的返回类型。
或者也许有另一种方法可以解决这个问题?
我有一个简单的application.conf文件:
smth="smth ${data}"
Run Code Online (Sandbox Code Playgroud)
这data是一个占位符,我想用 te 用户提供的一些数据填充它。我读了这个config文件,但我真的不知道如何将给定的数据传递到这个String. 唯一的想法是使用replaceon String,但我认为这不是最佳解决方案:
def fill(arg: String) = {
val config = ConfigFactory.load("application.conf").getString("smth")
println(config.replace("${data}", arg))
}
Run Code Online (Sandbox Code Playgroud)
是否有可能以更简洁的方式编写它?我也尝试用字符串插值做一些“魔术”,但我失败了。
我有一个返回一些 ZIO 的方法:
def method(...): ZIO[Any with clock, SomeError, Unit]
Run Code Online (Sandbox Code Playgroud)
调用此返回的方法Task[Unit]:
def otherMethod(..): Task[Unit] = {
ZIO.effect(method(...))
}
Run Code Online (Sandbox Code Playgroud)
问题是当我调用它时ZIO.effect我没有得到结果。我应该如何转换ZIO,以Task获得结果呢?
我有一个简单的理解代码:
def nameFormatter(request: SomeRequest) : FormattedData = {
for {
config <- ZIO.fromOption(configuration.get(request.name)).orElseFail( new Exception("Unknown config"))
name = config.data.name.pipe(SomeName)
} yield FormattedData(
name,
request.age
)
}
Run Code Online (Sandbox Code Playgroud)
但这个方法返回:
ZIO[Any, Exception, FormattedData]
Run Code Online (Sandbox Code Playgroud)
我想更改此方法以仅返回FormattedData,而不是整个 ZIO。是否可以?或者也许我应该以某种方式读取返回的类型并从中获取值?
我有一个像这样的json结构:
"data" : {
"fields": {
"field1": "value1",
"field2": "value2"
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想删除fields节点并将数据保留在data:
"data" : {
"field1": "value1",
"field2": "value2"
}
Run Code Online (Sandbox Code Playgroud)
我试着这样做:
val result = data.hcursor.downField("fields").as[JsonObject].toOption.head.toString
Run Code Online (Sandbox Code Playgroud)
但我得到了一个奇怪的结果,而不仅仅是字符串格式的 json
我也试过:
val result = data.hcursor.downField("fields").top.head.toString
Run Code Online (Sandbox Code Playgroud)
但它是一样的:
val result = data.toString
Run Code Online (Sandbox Code Playgroud)
它包括fields.
我应该如何更改我的代码以删除fieldsroot 并将数据保留在data属性下?
我创建了一个简单的 perl 脚本,它分为 2 个文件 -main.pl主content.pm
脚本放置在Project目录中,content.pm(模块)放置在Project/utils目录中。现在我想使用我content.pm制作main.pl的类似的东西来使用这个模块:
use Cwd;
use lib Cwd::abs_path(getcwd()."/utils");
use utils::content;
Run Code Online (Sandbox Code Playgroud)
但如果我这样做,我会得到一个错误:
Cant locate utils/content.pm in
@INC (you may need to install the utils::content module)
@INC contains: /Perl/utils /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.24.1 ...)
at ./main.pl line 10.
Run Code Online (Sandbox Code Playgroud)
是否可以使用 content.pm 运行此 main.pl 脚本而不会出现错误?也许我不应该使用getcwd()(我认为它使用工作目录而不是abs_path,但我不确定)?
我正在尝试在 UNIX 上启动 kafka,但首先我需要运行 Zookpeer。我有来自https://www.apache.org/dyn/closer.cgi?path=/kafka/2.0.0/kafka_2.11-2.0.0.tgz的 kafka 2.12 版本
我运行命令bin/zookeeper-server-start.sh config/zookeeper.properties,但出现错误:
/kafka_2.12-2.0.0/bin/kafka-run-class.sh: line 306: /project/multiar/jdk1.7.0_17_x64/bin/java: No such file or directory
/kafka_2.12-2.0.0/bin/kafka-run-class.sh: line 306: exec: /project/multiar/jdk1.7.0_17_x64/bin/java: cannot execute: No such file or directory.
Run Code Online (Sandbox Code Playgroud)
我的路径中有 Java 8 jdk:
openjdk version "1.8.0_161"
OpenJDK Runtime Environment (build 1.8.0_161-b14)
OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)
Run Code Online (Sandbox Code Playgroud)
为什么我无法运行zookeper服务器?我应该安装 jdk 7 还是更改.sh文件中的某些内容?
我用singleton对象创建了一个包含本地特征的简单应用程序:
object Singleton {
trait FirstTrait {
val func1 = (i: Int) => i * 2
}
trait SecondTrait {
val func2 = (s: String) => s
}
trait ThirdTrait {
val func3 = () => println("Func 3")
}
}
Run Code Online (Sandbox Code Playgroud)
现在,在Main对象中,我想做这样的事情:
object Main extends App {
val singleton = Singleton.FirstTrait//cannot do this
}
Run Code Online (Sandbox Code Playgroud)
但我不能这样做(编译错误).为什么?为什么我无法访问这个本地特征?如果我将Singleton对象更改为:
object Singleton {
trait FirstTrait {
val func1 = (i: Int) => i * 2
}
trait SecondTrait {
val func2 = …Run Code Online (Sandbox Code Playgroud) 我有一个这样的功能:
def getSomething: (String, Future[String]) => String = {
case (name, surname) if (name == "Joe", surname.map(s => s == "Doe")) => "Is ok"
}
Run Code Online (Sandbox Code Playgroud)
但是编译器说他需要executionContext这里的map函数。我试图做一些魔术:
def getSomething (implicit e: ExecutionContext): (String, Future[String]) => String{...}
Run Code Online (Sandbox Code Playgroud)
或者
def getSomething: (String, Future[String])(implicit e: ExecutionContext) => String{...}
Run Code Online (Sandbox Code Playgroud)
但它不起作用。是否可以将隐式参数传递给这样的功能?或者我可以用其他方式来做吗?