Java 带Hibernate的JPA-序列不使用XML
我第一次将JPA与Hibernate结合使用,并尝试使用Oracle数据库中的现有序列设置自动ID生成 我的实体映射如下所示:Java 带Hibernate的JPA-序列不使用XML,java,xml,oracle,hibernate,jpa,Java,Xml,Oracle,Hibernate,Jpa,我第一次将JPA与Hibernate结合使用,并尝试使用Oracle数据库中的现有序列设置自动ID生成 我的实体映射如下所示: <?xml version="1.0" encoding="UTF-8"?> <entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm" version="2.0"> <entity class="AmmAdapter.DataAccess
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
version="2.0">
<entity class="AmmAdapter.DataAccessLayer.Models.AmmSyncTypePriorities">
<table name="AMM_SYNC_TYPE_PRIORITIES" schema="TESTESTERON" catalog=""/>
<attributes>
<id name="id">
<column name="ID" nullable="false" length="10"/>
<generated-value strategy="SEQUENCE" generator="MODEL_SEQ"/>
<sequence-generator name="MODEL_SEQ" sequence-name="AMM_ED_GROUP_TYPES_SEQ"/>
</id>
<basic name="priority">
<column name="PRIORITY" nullable="false" length="10"/>
</basic>
<one-to-many name="ammSyncMessageTypesesById" mapped-by="ammSyncTypePrioritiesByPriority"
target-entity="AmmAdapter.DataAccessLayer.Models.AmmSyncMessageTypes"/>
</attributes>
</entity>
</entity-mappings>
结果我得到一个空ID。有人知道问题出在哪里吗 当你持久化对象时,将生成Id。谢谢你的回答,但我在发布此问题之前已经尝试过了。我从您的代码中发现以下错误:在调用save()之前,必须手动分配此类的ID。您知道如何解决此问题吗?:)XML定义了
的实体,而测试的类是AmmEdGroupTypes
。您是否有AmmEdGroupTypes
的实体定义?答案已接受。我很乐意投赞成票,但我似乎没有这方面的声誉/
EntityManager entityManager = entityManagerFactory.createEntityManager();
entityManager.getTransaction().begin();
AmmEdGroupTypes newGroup = new AmmEdGroupTypes();
newGroup.setName("test");
entityManager.persist(newGroup);
entityManager.getTransaction().commit();
System.out.println(newGroup.getId());
EntityManager entityManager = entityManagerFactory.createEntityManager();
entityManager.getTransaction().begin();
AmmEdGroupTypes newGroup = new AmmEdGroupTypes();
newGroup.setName("test");
System.out.println(newGroup.getId());
EntityManager entityManager = entityManagerFactory.createEntityManager();
entityManager.getTransaction().begin();
AmmEdGroupTypes newGroup = new AmmEdGroupTypes();
newGroup.setName("test");
entityManager.persist(newGroup);
entityManager.getTransaction().commit();
System.out.println(newGroup.getId());