小编Ata*_*ais的帖子

配置JPA让PostgreSQL生成主键值

所以我们的项目使用PostgreSQL数据库,我们使用JPA来操作数据库.我们使用Netbeans 7.1.2中的自动创建程序从数据库创建了实体.

经过小的更改后,我们的主键值被描述为:

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Basic(optional = false)
@NotNull
@Column(name = "idwebuser", nullable = false)
private Integer idwebuser;
Run Code Online (Sandbox Code Playgroud)

问题是现在应用程序不灵活,因为当我们直接修改数据库(使用SQL或其他工具)而不是通过Java应用程序时 - 生成的值低于实际的数据库ID值 - 因此我们在创建新实体.

是否有可能JPA可以让数据库自动生成ID,然后在创建过程后获取它?或者什么是更好的解决方案?谢谢.

编辑 更具体地说:我们有一个用户表,我的问题是使用任何类型的策略生成类型,JPA正在插入一个具有由其生成器ID指定的新实体.这对我来说是错误的,因为如果我自己对表进行更改,通过添加新条目,应用程序的GeneratedValue低于当前ID - 这导致我们出现重复ID异常.我们能解决它吗?)?

关于答案的简短说明 我身边有一个小谎言,因为我们使用了PG管理员 - >查看前100行并从那里编辑了行而不是使用选择.但是,事实证明,这个编辑器以某种方式跳过了更新ID的过程,因此即使在DB中,当我们编写一个正确的INSERT时,它也会被执行不正确的ID!所以它基本上是我们使用的编辑器的问题,而不是数据库和应用程序......

现在它甚至可以使用 @GeneratedValue(strategy=GenerationType.IDENTITY)

postgresql entity netbeans jpa java-ee

36
推荐指数
1
解决办法
5万
查看次数

AngularJS控制器,DRY代码的设计模式

我已经创建了一个完整的例子来描述这个问题.我的实际应用程序甚至比演示的演示版还要大,每个控制器都有更多的服务和指令.这导致更多的代码重复.我尝试将一些代码注释用于澄清, PLUNKER:http://plnkr.co/edit/781Phn?p = preview

重复部分:

routerApp.controller('page1Ctrl', function(pageFactory) {
  var vm = this;

  // page dependent
  vm.name = 'theOne';
  vm.service = 'oneService';
  vm.seriesLabels = ['One1', 'Two1', 'Three1'];

  // these variables are declared in all pages
  // directive variables,
  vm.date = {
    date: new Date(),
    dateOptions: {
      formatYear: 'yy',
      startingDay: 1
    },
    format: 'dd-MMMM-yyyy',
    opened: false
  };

  vm.open = function($event) {
    vm.date.opened = true;
  };

  // dataservice
  vm.data = []; // the structure can be different but …
Run Code Online (Sandbox Code Playgroud)

javascript design-patterns dry angularjs angularjs-controller

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

ArrayList和HashSet内存分配奇怪的测试结果

我受到了这个主题的启发:List和Set之间的性能和内存分配比较实际上运行了一些测试并测量ArrayList和之间的性能差异HashSet.

在上述主题中,最受欢迎的答案引起了很多关注(链接),他说:

对于相同数量的元素,HashSet比ArrayList消耗大约5.5倍的内存

ScalaMeter的帮助下,我想确保这一点.

我做了两个简单的测试,从添加10000100000元素都ArrayListHashSet.将初始大小设置为最大值不会更改结果.我用两种类型测试了这些集合:

  • Int (将连续数字0到100000)
  • String(使用Apache放置随机字符串RandomStringUtils)

该代码可以在我的仓库在这里.

并运行那些,给了我这样的结果:

  • X轴 - 尺寸 - >集合的大小
  • Y轴 - 值 - >使用的kB量

对于收藏品Int: 整数结果

对于持有String10号的藏品: 字符串结果大小为10

对于持有String50码的藏品: 字符串结果大小为50

问题:

在引用的答案中提到的理论发生了什么?这是假的吗?或者我的身边可能有些错误?

谢谢 :)!

@andrzej回答后 更新我再次更新了代码(和存储库).结果越来越好,但结果仍然不是5.5倍.我现在正在检查更多的东西.

java collections scala performance-testing scalameter

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

当SBT装配发现冲突时,为什么Maven装配工作正常

标题也可能是:
Maven和SBT组装插件之间有什么区别.

我发现这是一个问题,同时将项目从Maven迁移到SBT.

为了描述这个问题,我创建了一个带有依赖关系的示例项目,我发现它的行为有所不同,具体取决于构建工具.

https://github.com/atais/mvn-sbt-assembly


唯一的依赖是(sbt风格)

"com.netflix.astyanax" % "astyanax-cassandra" % "3.9.0",
"org.apache.cassandra" % "cassandra-all" % "3.4",
Run Code Online (Sandbox Code Playgroud)

而我不明白的是,为什么mvn package成功地创造了胖罐,同时sbt assembly给出了冲突:

[error] 39 errors were encountered during merge
[error] java.lang.RuntimeException: deduplicate: different file contents found in the following:
[error] /home/siatkowskim/.ivy2/cache/org.slf4j/jcl-over-slf4j/jars/jcl-over-slf4j-1.7.7.jar:org/apache/commons/logging/<some classes>
[error] /home/siatkowskim/.ivy2/cache/commons-logging/commons-logging/jars/commons-logging-1.1.1.jar:org/apache/commons/logging/<some classes>
...
[error] /home/siatkowskim/.ivy2/cache/com.github.stephenc.high-scale-lib/high-scale-lib/jars/high-scale-lib-1.1.2.jar:org/cliffc/high_scale_lib/<some classes>
[error] /home/siatkowskim/.ivy2/cache/com.boundary/high-scale-lib/jars/high-scale-lib-1.0.6.jar:org/cliffc/high_scale_lib/<some classes>
...
Run Code Online (Sandbox Code Playgroud)

maven-3 maven sbt maven-assembly-plugin sbt-assembly

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

将系统属性传递给spark-submit并从类路径或自定义路径读取文件

我最近发现了一种在Apache Spark中使用logback而不是log4j的方法(两者都用于本地使用spark-submit).然而,最后一块遗失了.

问题是Spark非常努力地不在logback.xml其类路径中查看设置.我已经找到了一种在本地执行期间加载它的方法:

到目前为止我有什么

基本上,检查系统属性logback.configurationFile,但加载logback.xml从我/src/main/resources/以防万一:

// the same as default: https://logback.qos.ch/manual/configuration.html
private val LogbackLocation = Option(System.getProperty("logback.configurationFile"))
// add some default logback.xml to your /src/main/resources
private lazy val defaultLogbackConf = getClass.getResource("/logback.xml").getPath

private def getLogbackConfigPath = {
   val path = LogbackLocation.map(new File(_).getPath).getOrElse(defaultLogbackConf)
   logger.info(s"Loading logging configuration from: $path")
   path
}
Run Code Online (Sandbox Code Playgroud)

然后当我初始化我的SparkContext时......

val sc = SparkContext.getOrCreate(conf)
sc.addFile(getLogbackConfigPath)
Run Code Online (Sandbox Code Playgroud)

我可以确认它在本地工作.

和谁玩 spark-submit

spark-submit \
  ...
  --master yarn \
  --class com.company.Main\
  /path/to/my/application-fat.jar \ …
Run Code Online (Sandbox Code Playgroud)

java scala apache-spark apache-spark-2.0 spark-submit

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

Jackson 创建的 Java Iterator 问题破坏了 Scala Flink 应用程序

有一个 Scala Flink 应用程序,我在其中使用 Jackson 库解析 JSON。解析由自定义方法处理,它使用延迟启动概念来保持快速。

现在,无论出于何种原因,在 Flink 管道中进一步传递带有惰性值的模型会导致一些奇怪的错误,util.Iterator这是读取 JSON 的主干。我怀疑问题可能实际上来自Kryo但我不知道如何确认。值得注意的是,.toList在同一个(flink)中急切地初始化模型(使用)map修复了这个问题。但事实并非如此,我想进一步传递我的懒惰模型。

最后,我提供了一个带有演示代码的存储库,但我也想在 StackOverflow 中提供所有详细信息。

示例模型和解析定义:

case class Root(items: Collection[Data])
case class Data(data: Collection[Double])

def toRoot(node: JsonNode): Root = {
    val data: util.Iterator[JsonNode] = if (node.hasNonNull("items")) node.get("items").elements() else node.elements()
    val items: Collection[Data] = data.asScala.map(x => toData(x))
    Root(items)
}
Run Code Online (Sandbox Code Playgroud)

JSON 数据类似于:

{
  "items": [
    {
      "data": [
        11.71476355252127,
        48.342882259940176,
        507.3,
        11.714791605037252,
        ...
Run Code Online (Sandbox Code Playgroud)

并在一部map作品中完成所有工作:

env.fromCollection(Seq(input))
   .map(i => flatten(read(i)))
   .print()
Run Code Online (Sandbox Code Playgroud)

但进一步传递失败:

env.fromCollection(Seq(input))
   .map(i …
Run Code Online (Sandbox Code Playgroud)

iterator scala jackson kryo apache-flink

7
推荐指数
0
解决办法
167
查看次数

PostgreSQL继承了JPA,Hibernate

我们对PostgreSQL中的继承有疑问,并将其映射为JPA中的实体.我们想要映射的数据库和表格是:

CREATE TABLE Answer (
    idAnswer SERIAL,
    answerContent VARCHAR,
    idQuestion INTEGER,
    version INTEGER,

    CONSTRAINT Answer_idAnswer_PK PRIMARY KEY (idAnswer),
    CONSTRAINT Answer_idQuestion_FK FOREIGN KEY (idQuestion) REFERENCES Question(idQuestion)
);


CREATE TABLE MatchAnswer (
    matchingAnswer VARCHAR NOT NULL,
    version INTEGER,

    CONSTRAINT MatchAnswer_idAnswer_PK PRIMARY KEY (idAnswer)       
) INHERITS(Answer);


CREATE TABLE TrueFalseAnswer (
    isTrue BOOLEAN NOT NULL,
    version INTEGER,

    CONSTRAINT TrueFalseAnswer_idAnswer_PK PRIMARY KEY (idAnswer)   
) INHERITS(Answer);
Run Code Online (Sandbox Code Playgroud)

我们使用Netbeans 7.1.2中的自动工具为实体映射它们.起初我觉得加入就足够了

@Entity
@Table(name = "truefalseanswer", catalog = "jobfairdb", schema = "public")
@XmlRootElement
public class Truefalseanswer extends Answer implements Serializable …
Run Code Online (Sandbox Code Playgroud)

database postgresql hibernate jpa java-ee

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

maven-clean-plugin没有删除所有给定的目录

在我的项目中,.pom我设置了maven-clean-plugin这样的:

<plugin>
  <artifactId>maven-clean-plugin</artifactId>
  <version>2.6.1</version>
  <configuration>
    <filesets>
      <fileset>
        <directory>src/main/webapp/bower_components</directory>
      </fileset>
      <fileset>
        <directory>node_modules</directory>
      </fileset>
      <fileset>
        <directory>node</directory>
      </fileset>
    </filesets>
  </configuration>
 </plugin>
Run Code Online (Sandbox Code Playgroud)

插件的目的是删除由其创建的目录frontend-maven-plugin.无论如何,最后一个工作正常.


问题

现在的问题是,无论如何,永远不会删除上述文件夹之一.它始终是"中间的".我添加了3 filesets并且始终没有删除第二个,请参阅日志:

[INFO] Deleting /src/main/webapp/bower_components (includes = [], excludes = [])
[INFO] Deleting /node_modules (includes = [.bindings], excludes = [])
[INFO] Deleting /node (includes = [], excludes = [])
Run Code Online (Sandbox Code Playgroud)

如果我更改文件夹的顺序:

[INFO] Deleting /src/main/webapp/bower_components (includes = [], excludes = [])
[INFO] Deleting /node (includes = [.bindings], excludes = [])
[INFO] Deleting /node_modules (includes = …
Run Code Online (Sandbox Code Playgroud)

java maven-plugin maven-3 maven maven-clean-plugin

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

将尝试转换为选项而不会丢失 Scala 中的错误信息

介绍

我创造了一个可爱的单线:

Option("something").map(_ => Try("something else")).flatten.getOrElse("default")
Run Code Online (Sandbox Code Playgroud)

它实际上不编译,有错误:

Error:(15, 31) Cannot prove that scala.util.Try[String] <:< Option[B].
Option("").map(_ => Try("")).flatten.getOrElse("");}
                             ^
Run Code Online (Sandbox Code Playgroud)

所以我找到了解决办法:

Option("something").flatMap(_ => Try("something else").toOption).getOrElse("default")
Run Code Online (Sandbox Code Playgroud)

但是,问题

我的同事警告我,我的构建实际上正在丢失错误信息。这是真的,在现实生活中 - 不可接受。

在摆脱了所有重复之后,我最终得到了:

implicit class CoolTry[T](t: Try[T]) extends StrictLogging {
  def toOptionSE: Option[T] = t match {
    case Success(s) => Some(s)
    case Failure(ex) =>
      logger.error(ex.getMessage, ex)
      None
  }
}
Run Code Online (Sandbox Code Playgroud)

使用:

Option("something").flatMap(_ => Try(new Exception("error")).toOptionSE).getOrElse("default")
Run Code Online (Sandbox Code Playgroud)

我相信在每个应用程序中都有许多类似的情况,我只是不知道我的方法是不好还是Try().toOption只是做错了?

据我所知,伐木是一个副作用,但在使用Try我想每个人都不会想到,如果出了问题?

  • 可以在implicit类得到改善呢?
  • 是否有任何实用程序库处理Try().toOption我的方式?
  • 或者我应该在这里采取什么(其他)方法?

谢谢!

scala try-catch optional scala-2.11

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

如何将DataFrame中的struct映射到case类?

在我的应用程序中的某个时刻,我有一个带有由案例类创建的Struct字段的DataFrame。现在,我想将其强制转换/映射回case类类型:

import spark.implicits._
case class Location(lat: Double, lon: Double)

scala> Seq((10, Location(35, 25)), (20, Location(45, 35))).toDF
res25: org.apache.spark.sql.DataFrame = [_1: int, _2: struct<lat: double, lon: double>]

scala> res25.printSchema
root
 |-- _1: integer (nullable = false)
 |-- _2: struct (nullable = true)
 |    |-- lat: double (nullable = false)
 |    |-- lon: double (nullable = false)
Run Code Online (Sandbox Code Playgroud)

基本:

res25.map(r => {
   Location(r.getStruct(1).getDouble(0), r.getStruct(1).getDouble(1))
}).show(1)
Run Code Online (Sandbox Code Playgroud)

看起来真的很脏有没有更简单的方法?

scala dataframe apache-spark apache-spark-sql apache-spark-2.0

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