Nie jestem pewien, czy jest to możliwe, ale próbuję odwzorować WorkflowInstancePlayer player
, która jest powiązana z dwoma innymi mapowaniami encji, WorkActionClass
i WorkflowInstance
w encji poniżej.Mapowanie jednostek JPA, które jest powiązane z dwoma odwzorowaniami jednostek:
public class Action implements Serializable {
@Id
private Long action_id;
@ManyToOne
@JoinColumn(name = "work_action_class_id", referencedColumnName = "work_action_class_id")
private WorkActionClass workActionClass;
@ManyToOne
@JoinColumn(name = "workflow_instance_id", referencedColumnName = "workflow_instance_id")
private WorkflowInstance workflowInstance;
UPDATE: How can I map to a WorkflowInstancePlayer player?????
@ManyToOne
@JoinColumns({
@JoinColumn(name = "workflow_instance_id", referencedColumnName = "workflow_instance_id", insertable = false, updatable = false),
@JoinColumn(name = "workActionClass.role_class_id", referencedColumnName = "role_class_id", insertable = false, updatable = false)
})
private WorkflowInstancePlayer player;
workflowInstancePlayer pochodzi podstawie workflow_instance_id
i role_class_id
role_class_id
ale jest naprawdę attibute z workActionClass
odwzorowane powyżej (workActionClass.role_class_id)
public class WorkflowInstancePlayer implements Serializable {
@Id
private WorkflowInstance workflowInstance;
@Id
private RoleClass roleClass;
@ManyToOne
@JoinColumn(name = "badge", referencedColumnName = "badge")
private Employee employee;
public class WorkActionClass implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "trx_seq")
private Long work_action_class_id;
@ManyToOne
@JoinColumn(name = "role_class_id")
private RoleClass roleClass;
Przykładowe dane byłoby:
Action
------
Id = 10
work_action_class_id = 7
workflow_instance_id = 2
WorkActionClass
---------------
Id = 7
role_name = reviewer
role_class_id = 3
WorkflowInstancePlayer
----------------------
workflow_instance_id = 2
role_class_id = 3
badge = 111222
Więc w Jednostce działania, będę wiedzieć, Workflow Instance Player to urzędnik z Id 111222 bez faktycznie przechowywania odznaki w tabeli działania.
UPDATE
podstawie postu Vlada I tweaked to być
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumnsOrFormulas({
@JoinColumnOrFormula([email protected](value="(SELECT a.role_class_id FROM (Use Table Name not Entity Name here) a WHERE a.work_action_class_id = work_action_class_id)", referencedColumnName="role_class_id")),
@JoinColumnOrFormula(column = @JoinColumn(name="workflow_instance_id", referencedColumnName="workflow_instance_id"))
})
odznaka = 111222 jest jakaś funkcja workflow_instance_id (= 2) i role_class_id (= 3) - czy to prawda? .... jeśli nie, to jak wyprowadzasz znaczek = 111222? – NickJI
niezupełnie. To jest aplikacja przepływu pracy. Pracownik 111222 został przydzielony jako Recenzent w przepływie pracy. Recenzent będzie miał wiele działań w zależności od typu przepływu pracy. Numer sekwencyjny Oracle 2 był następny inline dla identyfikatora instancji workflow, a funkcja Reviewer Role ma atrybut role_class_id równy 3. Tak więc te trzy wartości zostaną wstawione do WorkflowInstancePlayer – jeff
@NickJI Ponownie przeczytałem twój komentarz. jeśli masz na myśli funkcję "w związku", to tak. Na początku przeczytałem to jako "formułę", jak w przypadku id_wystąpień, gdzie klasa_certyfikatu podzielona przez .... itd. Relacja jest zdefiniowana w tabeli WorkflowInstancePlayer – jeff