小编all*_*cer的帖子

将多个@OneToOne关系休眠到同一类对象

我有一个与同一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)

如果看到的话,我@OneToOnePlace对象有2个关系。一切工作几乎都很好-当我使用REST持久化对象时,我得到了发件人和收件人正确的JSON响应。当我想要补丁 …

java hibernate relationship

5
推荐指数
0
解决办法
609
查看次数

Scala、cats、http4s - 无法识别来自 Http4s 的 <+> 符号

我创建了两条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)

scala scala-cats http4s

5
推荐指数
2
解决办法
1158
查看次数

Scala、ZIO - 将 Future 转换为 ZIO 或将 ZIO 转换为 Future。是否可以?

我创建了两个版本的服务。第一个使用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方法以将其与这两种服务一起使用?我需要在这里有共同的返回类型。

或者也许有另一种方法可以解决这个问题?

scala future scala-cats zio

4
推荐指数
1
解决办法
2593
查看次数

Scala - 如何从配置文件将数据设置为占位符?

我有一个简单的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)

是否有可能以更简洁的方式编写它?我也尝试用字符串插值做一些“魔术”,但我失败了。

scala config

3
推荐指数
1
解决办法
306
查看次数

Scala、ZIO - 如何将 ZIO 转换为 Task 并获得结果?

我有一个返回一些 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获得结果呢?

scala scala-cats zio

3
推荐指数
1
解决办法
167
查看次数

Scala、ZIO - 如何从任务返回值?

我有一个简单的理解代码:

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。是否可以?或者也许我应该以某种方式读取返回的类型并从中获取值?

scala zio

2
推荐指数
1
解决办法
2553
查看次数

Scala、Circe、Json - 如何从 json 中删除父节点?

我有一个像这样的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属性下?

json scala scala-cats circe

1
推荐指数
1
解决办法
69
查看次数

Perl - 从主脚本中的其他目录获取模块的绝对路径

我创建了一个简单的 perl 脚本,它分为 2 个文件 -main.plcontent.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,但我不确定)?

perl module getcwd

0
推荐指数
1
解决办法
156
查看次数

无法启动 Zookeeper 服务器。没有jdk目录

我正在尝试在 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文件中的某些内容?

java unix apache-kafka apache-zookeeper

0
推荐指数
1
解决办法
2万
查看次数

Scala - 为什么不能使用来自对象的特征

我用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)

scala

0
推荐指数
1
解决办法
89
查看次数

Scala - 如何将隐式参数传递给函数(HOF)?

我有一个这样的功能:

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)

但它不起作用。是否可以将隐式参数传递给这样的功能?或者我可以用其他方式来做吗?

scala implicit higher-order-functions

0
推荐指数
1
解决办法
113
查看次数