I have an entity. And it have base abstract entity, that marked @Inheritance(strategy = TABLE_PER_CLASS) 1. create child class entity. 2. find it by id throught base entity class. Bug: Nothing found. Expected: entity found
In ORM core it works fine. ORG TestCase: {code:java} /* * Hibernate OGM, Domain model persistence for NoSQL datastores * * License: GNU Lesser General Public License (LGPL), version 2.1 or later * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.ogm.backendtck.id;
import java.util.UUID; import java.util.function.Consumer; import javax.persistence.Entity; import javax.persistence.EntityManager; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Inheritance; import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator; import org.hibernate.ogm.utils.jpa.OgmJpaTestCase;
import org.junit.After; import org.junit.Before; import org.junit.Test;
import static javax.persistence.InheritanceType.TABLE_PER_CLASS; import static org.fest.assertions.Assertions.assertThat;
/** * Test that @Inheritance(strategy = TABLE_PER_CLASS) with generated id work correct */ public class TableInheritanceTest extends OgmJpaTestCase {
private EntityManager em;
@Before public void setUp() { em = getFactory().createEntityManager(); }
@After public void tearDown() { em.close(); }
@Test public void testBaseTableIdGenerates() { Truck truck = new Truck(); doInTransaction( em -> em.persist( truck ) );
doInTransaction( em -> { BaseCar loadedTruck = em.find( BaseCar.class, truck.getId() ); assertThat( loadedTruck.getId() ).isNotNull(); } ); }
private void doInTransaction(Consumer<EntityManager> action) { em.getTransaction().begin();
action.accept( em );
em.getTransaction().commit(); em.clear(); }
@Override public Class<?>[] getAnnotatedClasses() { return new Class<?>[] { BaseCar.class, Truck.class }; }
@Entity @Table(name = "TRUCK") private static class Truck extends BaseCar { }
@Entity @Table(name = "BASE_CAR") @Inheritance(strategy = TABLE_PER_CLASS) private abstract static class BaseCar { protected UUID id; private String name;
@Id @GeneratedValue(generator = "uuid") @GenericGenerator(name = "uuid", strategy = "uuid2") public UUID getId() { return id; }
public void setId(UUID id) { this.id = id; } }
} {code}
|
|