У меня есть вопрос, что я не уверен, что его можно с JPAJPA - присоединяйся различными таблицы зависит от типа столбца
если я скажу таблица А
public class A {
Long id;
Long type;
Details details; // can this connect to B or c depends on type?
}
и таблицы B и C являются две разные таблицы подробностей. (не уверены, что-то общее) Могу ли я подключить B или C к A, зависит от A.type
?
благодаря
Alon
EDIT: позвольте мне попытаться быть более точным
У меня есть объект
@Entity
@Table(name = "tbl_A")
public class A implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
private Long id; // seems like spring's jpa has issue hanlde "_"
/*
*can i achive some thinglike
* if detailsTableType== 1 use Details as B table
*/
@OneToOne(mappedBy = "details", cascade = CascadeType.ALL)
@PrimaryKeyJoinColumn
private B details;
/*
*can i achive some thinglike
* if detailsTableType== 2 use Details as C table
*/
@OneToOne(mappedBy = "details", cascade = CascadeType.ALL)
@PrimaryKeyJoinColumn
private C details; //Details
/*
* this field set the from where the join should be
*/
private Long detailsTableType;
}
Примечание B, C не обязательно делиться любой в общем
EDIT 2:
одним из возможных решений может быть какой-то взломать с помощью геттера. что означает: карта в A все возможное соединение (отметьте их как ленивые) и создайте геттер, который будет знать, зависит от типа, который должен использовать его.
В действительности у вас есть иерархия классов с несколькими подклассами 'A'. Один тип 'A' имеет объект детали« B », а другой - объект детали« C ». Это похоже на комбинацию спящего режима для подкласса Table-per-subclass и table-per-class-hierarchy. См. Http://docs.jboss.org/hibernate/orm/3.3/reference/en-US/html/inheritance.html#inheritance-mixing-tableperclass-tablepersubclass –