hibernate - Spring data jpa inheritance - table per class not working -
i have abstract entity.
@entity @inheritance(strategy=inheritancetype.table_per_class) @entitylisteners(auditingentitylistener.class) public abstract class abstractentity { @id @generatedvalue(strategy = generationtype.auto) protected long id; @createdby protected string createdby; @createddate protected date creationdate; @lastmodifiedby protected string modifiedby; @lastmodifieddate protected date lastmodifieddate; }
and 2 concrete implementations of class:
class a:
@entity @table(name = "a") public class extends abstractentity { @column(name = "name", nullable = false) private string name; @column(name = "priority", nullable = false) private int priority; }
class b:
@entity @table(name = "b") public class b extends abstractentity { @column(name = "place", nullable = false) private string place; @column(name = "distance", nullable = false) private int distance; }
and common repository interface:
@norepositorybean public interface irepository extends repository<abstractentity, long> { /** * method query unique id/pk. * @param id * @return entity id "id" */ @query("select entity #{#entityname} entity entity.id = ?1") public abstractentity findbyid(long id); /** * insert method * @param abstractentity * @return modified entity after insertion */ public abstractentity save(abstractentity abstractentity); /** * select records table * @return list of entities representing records in table */ @query("select entity #{#entityname} entity") public list<abstractentity> findall(); /** * delete record id * @param id */ public void deletebyid(long id); }
and each class has it's own repository extends generic repository:
public interface arepository extends irepository { } public interface brepository extends irepository { }
when invoke findall() on arespository, records in both arepository , brepository. since, inheritance type specified table_per_class, assumed findall() pick records table. added query findall() method detect entity type , pick records appropriately, doesn't seem doing anything. there i'm missing here?
i'm using hibernate underlying persistence framework , working on hsqldb.
thanks,
aarthi
the typing of repositories incorrect change to.
@norepositorybean public interface irepository<entity extends abstractentity> extends repository<entity, long> { } public interface arepository extends irepository<a> { } public interface brepository extends irepository<b> { }
Comments
Post a Comment