使用Apache NetBeans 12,Jakarta / Java EE,EclipseLink和Payara创建持久性单元时行为不一致吗?

问题描述

使用Archetype的airhacks java EE 8项目创建简单的测试应用程序时,我和我的同事都遇到不一致的行为。

我们创建一个简单的POJO并使用Entity注释将其标记

@Entity
public class GroceryItem {  ...   }

在Apache NetBeans 12中,@ Entity带有警告下划线。当我们选择的警告(或做Alt + Enter键),我们看到一个选项“创建持久性单元”,我们点击。

但是,我能够做到这一点。

enter image description here

我选择jdbc:derby://选项,单击Create,然后按预期在其他源... meta-inf中创建 persistence.xml 文件。这是原始的persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
  <persistence-unit name="somePU" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
      <property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527/sample"/>
      <property name="javax.persistence.jdbc.user" value="app"/>
      <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/>
      <property name="javax.persistence.jdbc.password" value="app"/>
      <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
    </properties>
  </persistence-unit>
</persistence>

我将其修改为使用 JTA ,并删除了对大多数属性的引用,结果如下:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
  <persistence-unit name="somePU" transaction-type="JTA">
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
      <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
    </properties>
  </persistence-unit>
</persistence>

请注意,我已将事务类型属性从“ RESOURCE_LOCAL”更改为“ JTA”。

现在,我只需转到命令行并使用创建一个杂货店list.war文件

mvn package

然后用Payara运行它:

java -jar payara.jar --deploy "path-to-the-war-file" --port 8080

我看到了我所期望的生成的Payara REST URL,它们运行良好。

但是,我的同事陷入了“创建持久性单元”步骤。他们根本看不到jdbc:derby:// localhost ...选项。它们具有与我相同的Apache NetBeans,也具有Payara micro,就像我正在使用的一样。他们无法通过此过程创建persistence.xml文件

我已经读到,也许Derby在某些平台上已经失去了支持,但是我不明白为什么我的作品还可以,而他们的却没有给他们选择的机会。

我对Java / Apache NetBeans的这一方面有些陌生(我花了很多时间在Java SE,Android上,甚至使用针对REST和WSDL / SOAP的ASP .NET Core MVC进行了Web服务,但是这一切都变得非常困惑。

所以,我的问题是:有没有人遇到过这种行为并予以纠正,或者是否有有效的解决方法?通过NetBeans中的“新XML文件”创建persistence.xml似乎没有解决问题的方法-该图标与选择“创建持久性单元”时的图标甚至有所不同。这似乎非常复杂,我自己无法重现他们的问题。

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...