ORM - Vaadin - JavaPersistence - 不保存新实体

Posted

技术标签:

【中文标题】ORM - Vaadin - JavaPersistence - 不保存新实体【英文标题】:ORM - Vaadin - JavaPersistence - Does not save the new entities 【发布时间】:2014-10-09 01:48:26 【问题描述】:

我正在开发一个使用 Vaadin 框架、带有 Eclipselink 的 ORM JavaPersistence 和一个 Oracle 数据库的应用程序。

我有以下问题: 我已经使用注释将我的所有逻辑模型映射到数据库,如果数据库有信息,映射过程会给我带来所有信息。当我想保存一个新实体时出现问题,我想说我创建了一个类的新实例并且该类没有保存在数据库中。我必须保存该实例的唯一方法是使用我要保存的实例的类类型创建一个 JPAContainer,然后调用方法 .AddEntity(instance)。

我不熟悉对象编程和 ORM。但据我所知,ORM 对于将内存数据保存在数据库中很有用。

这是我的 persistence.xml:

    org.eclipse.persistence.jpa.PersistenceProvider

</provider>
<exclude-unlisted-classes>
    false
</exclude-unlisted-classes>

 <properties> 

    <property name="javax.jbdc.platform" value="org.eclipse.persistence.platform.database.OraclePlatform" />


    <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver" /> 
     <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
    <property name="javax.persistence.jdbc.user" value="system" />
    <property name="javax.persistence.jdbc.password" value="Windows706" />
    <property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>

提前致谢, 问候!

【问题讨论】:

您如何尝试持久化您的实体,它是否在事务中? 我知道在哪里可以持久化实体的唯一方法是使用实​​体 JPAContainter,然后使用 JPA 调用方法 .AddEntity(AnIstance)。因此,我正在寻找更自动化的东西。 【参考方案1】:

由于 EclipseLink 实现了 JPA,您可以以传统方式将实体保存在 DB 中。

EntityManagerFactory emf = Persistence.createEntityManagerFactory("examplePersistenceUnit");
EntityManager em = emf.createEntityManager();
try

    em.getTransaction().begin();
    YourEntity e = new YourEntity();
    e.setName("Chuck");
    e.setCity("Lisboa");
    em.persist(e);
    em.getTransaction().commit();

finally

    em.close();
    emf.close();

可以在here找到很好的EclipseLink介绍

【讨论】:

以上是关于ORM - Vaadin - JavaPersistence - 不保存新实体的主要内容,如果未能解决你的问题,请参考以下文章

Vaadin 21 查看角色

Vaadin 10 滚动查看

未找到GWT模块com.vaadin.v7.Vaadin7WidgetSet

如何在 Vaadin 14 中播放声音?

Vaadin:JPA 容器的新手

Vaadin 中的外部项目依赖项