Добрый день, никак не получается аннотировать модель. Помогите, пожалуйста.
Таблица, в которой лежат деревья. Деревья различаются по полю.
У листа дерева может быть несколько потомков и родителей.
У ребер есть атрибуты.
Вот схема БД:
-- Узел дерева, @Id=WORKFLOW_SEQ_ID
CREATE MULTISET TABLE ETL_WORKFLOW_SEQ
(
WORKFLOW_SEQ_ID INTEGER NOT NULL,
WORKFLOW_ID BIGINT NOT NULL,
IS_NAME VARCHAR(255) CHARACTER SET UNICODE NOT CASESPECIFIC,
INFO_SYSTEM_INST_CD VARCHAR(255) CHARACTER SET UNICODE NOT CASESPECIFIC,
DISABLE BYTEINT)
UNIQUE PRIMARY INDEX ( WORKFLOW_SEQ_ID );
--Вот узлы
--составным ключом должны быть: WORKFLOW_SEQ_ID (child)+REL_WORKFLOW_SEQ_ID (parent)+JOB_ID (tree id)
CREATE MULTISET TABLE ETL_WORKFLOW_SEQ_REL
(
WORKFLOW_SEQ_ID INTEGER NOT NULL, -ребенок FK->ETL_WORKFLOW_SEQ
REL_WORKFLOW_SEQ_ID INTEGER NOT NULL, --родитель FK->ETL_WORKFLOW_SEQ
START_TYPE_ID SMALLINT NOT NULL, -- атрибут ребра
DISABLE_START_TYPE_ID SMALLINT, -- атрибут ребра
JOB_ID BIGINT) -- Детерминант, SELECT по конкретному JOB_ID, это дерево. В таблице несколько деревьев.
PRIMARY INDEX ( WORKFLOW_SEQ_ID );
Попробовал смоделировать.... http://pastebin.com/0XcRePuF
/** ETL_WORKFLOW_SEQ was easy*/
@Entity
@Table(name="ETL_WORKFLOW_SEQ")
public class EtlWorkflowSeq {
@Id
@Column(name="WORKFLOW_SEQ_ID")
public Integer id;
@OneToOne(fetch=FetchType.EAGER)
@JoinColumn(name="WORKFLOW_ID")
public EtlWorkflow etlWorkflow;
@Column(name="IS_NAME")
public String integrationServiceName;
@Column(name="INFO_SYSTEM_INST_CD")
public String infoSystemInstCd;
@Column(name="DISABLE")
public Integer disable;
}
/* Взрыв мозга ETL_WORKFLOW_SEQ_REL
*/
@Entity
@Table(name="ETL_WORKFLOW_SEQ_REL")
public class EtlWorkflowSeqNode {
@EmbeddedId
public EtlWorkflowSeqNodeId etlWorkflowSeqNodeId;
@OneToMany(fetch=FetchType.LAZY)
@JoinColumns(value={@JoinColumn(name="JOB_ID"),@JoinColumn(name="WORKFLOW_SEQ_ID")})
public Set<EtlWorkflowSeqNode> children;
@JoinColumns(value={@JoinColumn(name="JOB_ID"),@JoinColumn(name="REL_WORKFLOW_SEQ_ID")})
@OneToMany(fetch = FetchType.EAGER)
public Set<EtlWorkflowSeqNode> parents;
@Embeddable
public static class EtlWorkflowSeqNodeId implements Serializable{
private static final long serialVersionUID = 1L;
public EtlWorkflowSeqNodeId(){}
@Column(name="JOB_ID")
public Integer jobId;
@Column(name="REL_WORKFLOW_SEQ_ID")
public Integer parentId;
public String toString(){
return "EtlWorkflowSeqNodeId{jobId=>"jobId",parent=>"parentId"}";
}
}
}
При попытке достать дерево получается переполнение стека
.