问题描述
使用Archetype的airhacks java EE 8项目创建简单的测试应用程序时,我和我的同事都遇到不一致的行为。
@Entity
public class GroceryItem { ... }
在Apache NetBeans 12中,@ Entity带有警告下划线。当我们选择的警告(或做Alt + Enter键),我们看到一个选项“创建持久性单元”,我们点击。
但是,我能够做到这一点。
我选择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 (将#修改为@)