JPA插入声明

jav*_*csw 31 jpa

JPA insert语句的正确语法是什么?这可能听起来像一个简单的问题但我无法找到答案.

我知道如何从Java代码中完成它,但我正在寻找一种方法,如果创建了数据库,就将对象插入到数据库中.

有任何想法吗?

frm*_*frm 30

JPA中没有INSERT语句.您必须使用EntityManager插入新实体.JPA中允许的唯一语句是SELECT,UPDATE和DELETE.


Ben*_*ein 17

这是使用EntityManager持久化JPA对象的一个很好的参考.例如,这是使用persist方法插入对象的方法:

EntityManager em = getEntityManager();
em.getTransaction().begin();

Employee employee = new Employee();
employee.setFirstName("Bob");
Address address = new Address();
address.setCity("Ottawa");
employee.setAddress(address);

em.persist(employee);

em.getTransaction().commit();
Run Code Online (Sandbox Code Playgroud)


mem*_*zac 5

如果要在java之外的数据库中插入数据,则需要使用本机SQL.使用SQL Standard确保大多数数据库都可以执行脚本.当应用程序运行时,JPA将生成新数据的映射,并在需要时将其转换为对象.

如何确保脚本在所有数据库中都有效?这就是DBA在制作商店程序或本机查询时遇到的同样问题......这就是为什么JPA存在,以避免直接在SQL中使用,但我知道有时需要这样做.

我建议你制作3个主要脚本.一个用于Oracle,一个用于SQL Server(从2005到2008版本的日期数据类型中存在一些问题,所以要小心),一个用于MySQL.使用标准SQL启动脚本,当您在此数据库中测试它时,您将发现需要为每个DBMS执行的一些修复.

你得到它,你可以制作一个文件脚本(*.sql)文件,并与数据库管理器一起运行.如果它运行服务器,将应用程序联机,数据将很好地集成.


jav*_*csw 2

到目前为止看起来更有希望的选择是使用Flyway。这是一种更加自动化的方法,基本上自动处理数据库的升级过程。