小编Sté*_*cel的帖子

EclipseLink 2.7.0和JPA API 2.2.0 - 签名不匹配

运行由maven构建的具有以下依赖项的项目时:

        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>javax.persistence</artifactId>
            <version>2.2.0</version>
        </dependency>

        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>eclipselink</artifactId>
            <version>2.7.0</version>
        </dependency>
Run Code Online (Sandbox Code Playgroud)

我在运行时收到以下错误:

java.lang.SecurityException: class "javax.persistence.Cacheable"'s signer information does not match signer information of other classes in the same package
Run Code Online (Sandbox Code Playgroud)

javax.persistence-2.2.0工件已签名并包含javax.persistence.Cacheable.class注释,而eclipselink-2.7.0工件签名且包含相同的java类注释.

怎么解决这个问题?

编辑

用版本2.1.1替换javax.persistence artifact 2.2.0版修复了问题(这个没有签名),但我不确定这是正常情况.

java jpa eclipselink jpa-2.2

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

artifact:mvn ant任务因maven 3.3.x而失败

我正在使用ant版本1.9.6和maven 3.3.9.以下ant任务因maven 3.3.9而失败.它与maven 3.2.5完美配合.

<artifact:mvn pom="modules/pom.xml" mavenHome="${env.MAVEN_HOME}" fork="true" failonerror="true">
    <arg value="install" />
</artifact:mvn>
Run Code Online (Sandbox Code Playgroud)

错误消息是: [artifact:mvn] -Dmaven.multiModuleProjectDirectory system property is not set.

我设法找到了解决方法(并希望与您分享):

<artifact:mvn pom="modules/pom.xml" mavenHome="${env.MAVEN_HOME}" fork="true" failonerror="true">
    <jvmarg value="-Dmaven.multiModuleProjectDirectory" />
    <arg value="install" />
</artifact:mvn>
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,添加jvmarg元素来设置maven.multiModuleProjectDirectory系统属性(没有任何指定值)可以解决问题.

问题:这个系统属性是关于什么的?我没有为这个系统属性指定任何值,我应该吗?(为了利用maven 3.3.x中的一些新功能)

java ant maven

6
推荐指数
0
解决办法
830
查看次数

eclipselink静态编织与Java 9上的最终字段

我有一些JPA注释字段,如下所示:

@Column(name = "SOME_FIELD", updatable = false, nullable = false)
private final String someField;
Run Code Online (Sandbox Code Playgroud)

当实体插入数据库时​​,这些字段存储在数据库中.它们无法进一步更新.对于Java编程语言,可以将这些字段视为final.

使用EclipseLink静态编织插件,由于某些字节代码检测,可能会延迟加载实体.

我不知道JPA中是否正式允许这样的构造(最终字段),但我喜欢使用它们,因为它们在编译时强制执行这些字段并不是要更新.

在Java 8中,使用这种结构构建的程序运行良好.但是在Java 9中,当涉及EclipseLink静态编织时,我得到以下运行时异常:

Caused by: java.lang.IllegalAccessError: Update to non-static final field xxx.yyy.SomeEntity.someField attempted from a different method (_persistence_set) than the initializer method <init> 
Run Code Online (Sandbox Code Playgroud)

这样的错误似乎是由于以下JVM规范:

否则,如果该字段是final,则必须在当前类中声明,并且该指令必须在当前类的实例初始化方法()中发生.否则,抛出IllegalAccessError.

因此,我觉得一些编织工具需要一些更新才能实现这个JVM规范.EclipseLink静态编织工具似乎就是其中之一.

问题:

  • JPA中是否允许使用此处提供的最终字段构造?
  • 是否有JDK 9选项来禁止检查最终字段分配,而不仅仅是在类的实例初始化方法()中(作为临时解决方法)?

编辑:

根据JPA规范,JPA中不允许使用最终字段:

实体类不能是最终的.实体类的方法或持久性实例变量可能不是最终的.

jpa eclipselink compile-time-weaving java-9

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

如何在可滚动列表中将 Vuetify v-menu 附加到其父元素?

在我的项目中,我有一个可滚动的项目列表,每个项目都有一个菜单,当其激活按钮悬停时会打开该菜单。

默认情况下, v-menu 元素附加到 v-app 元素,作为许多 Vuetify 元素的安装点。当我使用此默认行为时,生成的 HTML 包含许多用于弹出菜单的分离 div 元素,列表中的每个项目一个,在生成的 v-app div 中:

<div class="menu__content" style="min-width: 0px; top: 12px; left: 0px; transform-origin: left top 0px; z-index: 0; display: none;"></div>
Run Code Online (Sandbox Code Playgroud)

这会影响渲染 DOM 的读取,结果有点混乱,尤其是在调试时。

此外,一旦打开菜单并滚动列表,菜单将保持在固定位置,因此在视觉上与其激活器按钮分离。

我怎样才能将菜单附加到列表的每个项目上,以获得更易读的渲染 DOM(见下文)?

<my-list>
  <my-item>
    <div class="menu__content" style="min-width: 0px; top: 12px; left: 0px; transform-origin: left top 0px; z-index: 0; display: none;"></div>
  </my-item>
</my-list>
Run Code Online (Sandbox Code Playgroud)

以及如何在滚动列表时将 v 菜单粘到其激活按钮上?

html vue.js vuetify.js

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

在微服务中,事务边界是有界上下文还是聚合?

可能第一个问题应该是:什么可以帮助我决定我的微服务是否应该包含一个可能有多个聚合的整个有界上下文,或者它应该只包含一个聚合?

如果微服务包含多个聚合,那么我脑海中就会出现另一个问题:微服务应该有多个事务边界(每个聚合一个)还是只有一个事务边界(有界上下文)?

也许,这些问题的答案是:视情况而定。但我想有一些理由来做出正确的决定。

我尝试实现一个实验性微服务,该微服务实现了由 3 个聚合和每个聚合一个事务边界组成的有界上下文,但我遇到了一些痛点:

  • 微服务本身的最终一致性
  • 以弹性方式在微服务中原子更新聚合和发布域事件
  • 决定是所有领域事件都应该对外发布(给其他微服务)还是只发布其中的一部分
  • 决定是否以集成事件的形式发布领域事件,以保持领域模型的纯度

然后我设想了将微服务拆分为多个微服务的可能性,每个微服务一个:

  • 发布所有领域事件变得更自然(无需明确区分领域事件和集成事件)
  • 微服务内部复杂度降低

我还没有找到关于这个主题的一些文档来指导我做出决策。

编辑:

考虑到有界上下文可以是一组作为合作伙伴一起工作的微服务,并且每个微服务将使用自己的扩展策略封装一个且仅一个聚合,这是否有意义?

然后,每个微服务都有一个且只有一个改变的理由:聚合。

domain-driven-design microservices

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