Bunun mümkün olup olmadığından emin olun, ancak WorkflowInstancePlayer player
eşlemini, ilgili diğer iki eşleme eşleştirmesi, WorkActionClass
ve WorkflowInstance
temel alınarak aşağıdaki eşlemede eşleştirmeye çalışın.JPA Varlık Eşlemesi, diğer iki nesne eşlemesine göre ilişkili
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 workflow_instance_id
ve role_class_id
ancak role_class_id
göre türetilir (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;
workActionClass
bir attibute gerçekten
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;
Örnek verileri olacaktır:
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
Yani Eylem Varlık içinde, ben İş Akışı Örneği Oyuncu aslında Eylem tablosunda rozeti kaydetmeden Id 111222 ile Çalışan olduğunu bileceksiniz.
GÜNCELLEME
Ben tweaked Vlad yazı dayanarak bu
@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"))
})
rozet = 111222 workflow_instance_id bazı fonksiyonudur (= 2) ve role_class_id (= 3) - doğru mu? .... değilse nasıl bir rozet türetiyorsunuz = 111222? – NickJI
gerçekten değil. Bu bir iş akışı uygulamasıdır. Çalışan 111222 iş akışında Gözden Geçiren olarak atanmıştır. Gözden geçirenin iş akışı türüne bağlı olarak birçok eylemi olacaktır. 2'nin Oracle dizi sayısı, iş akışı örneği kimliği için satır içi satırdaydı ve bir Yorumcu Rolü, bir role_class_id 3 değerine sahip. Bu üç değer, WorkflowInstancePlayer uygulamasına eklenir – jeff
@NickJI Yorumunuzu tekrar okuyorum. Eğer "ilişki" kelimesinde olduğu anlamına gelirse evet. İlk olarak, example_id zamanlarında olduğu gibi "bir formül" olarak okudum. Role_class_id .... tarafından bölündü. İlişkisi, WorkflowInstancePlayerId'ye ulaşmanız gereken ancak RoleClass veya WorkflowInstance'dan gelmeniz gereken Çalışana ulaşmak için WorkflowInstancePlayer tablosunda – jeff