[...]
... což mě přivádí k jednomu dotazu. A to, zda je dobře ty entitní třídy
upravovat a doplňovat o další funkcionalitu, tím se ztratí možnost je pak
snadno přegenerovat. Napadlo mě udělat potomka a rozšiřovat jej, ale nevím, jak
to pak bude fungovat, všude se píše, že potomci se dělají v případě, že chci
mít podentitu, tedy že to ve výsledku bude ve dvou tabulkách s vazbou 1:1, což
ale nechci. Jak se to tedy správně dělá?
[...]
Zkuste se podivat na anotaci @MappedSuperclass. Rekl bych, ze to dela
presne to, co chcete. Entitou jako takovou bude pouze oddedena trida,
ale podedi vsechny sloupecky a nastaveni rodicovske tridy.
Priklad:
/* generovana trida */
@MappedSuperclass
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public abstract class Foo {
private int id;
private String field;
@Id @GeneratedValue(strategy = GenerationType.TABLE)
@Column(name = "ID", nullable = false)
public int getId() { return id; }
public void setId(int id) { this.id = id; }
@Column(name = "FIELD", nullable = false, length = 50, unique = true)
public String getField() { return field; }
public void setField(String field) { this.field = field; }
}
/* trida generovana pouze jednou */
@Entity
@Table(name="FOO")
public class FooImpl extends Foo {}
---
Radim Tlusty
Eurosoftware s.r.o