使用 Composite Key Hibernate 删除实体行
Delete an Entity row using Composite Key Hibernate
可嵌入Class
@Embeddable
public class SaTaskInterfacesId implements java.io.Serializable {
// Fields
/**
*
*/
private static final long serialVersionUID = -4070669691040083979L;
private Long processRuleId;
private Long interfaceCode;
// Constructors
/** default constructor */
public SaTaskInterfacesId() {
}
/** full constructor */
public SaTaskInterfacesId(Long processRuleId, Long interfaceCode) {
this.processRuleId = processRuleId;
this.interfaceCode = interfaceCode;
}
// Property accessors
@Column(name = "PROCESS_RULE_ID")
public Long getProcessRuleId() {
return this.processRuleId;
}
public void setProcessRuleId(Long processRuleId) {
this.processRuleId = processRuleId;
}
@Column(name = "INTERFACE_CODE")
public Long getInterfaceCode() {
return this.interfaceCode;
}
public void setInterfaceCode(Long interfaceCode) {
this.interfaceCode = interfaceCode;
}
public boolean equals(Object other) {
if ((this == other))
return true;
if ((other == null))
return false;
if (!(other instanceof SaTaskInterfacesId))
return false;
SaTaskInterfacesId castOther = (SaTaskInterfacesId) other;
return ((this.getProcessRuleId() == castOther.getProcessRuleId()) || (this
.getProcessRuleId() != null
&& castOther.getProcessRuleId() != null && this
.getProcessRuleId().equals(castOther.getProcessRuleId())))
&& ((this.getInterfaceCode() == castOther.getInterfaceCode()) || (this
.getInterfaceCode() != null
&& castOther.getInterfaceCode() != null && this
.getInterfaceCode()
.equals(castOther.getInterfaceCode())));
}
public int hashCode() {
int result = 17;
result = 37
* result
+ (getProcessRuleId() == null ? 0 : this.getProcessRuleId()
.hashCode());
result = 37
* result
+ (getInterfaceCode() == null ? 0 : this.getInterfaceCode()
.hashCode());
return result;
}
}
Entity Class
@Entity
@Table(name = "SA_TASK_INTERFACES")
public class WorkFlowTaskInterface2Entity extends BaseEntity {
private SaTaskInterfacesId id;
// private Long saWorkflowRules;
private Short sortOrder;
private String itemCsv;
private String personCodeCsv;
// Property accessors
@EmbeddedId
@AttributeOverrides({
@AttributeOverride(name = "processRuleId", column = @Column(name = "PROCESS_RULE_ID" )),
@AttributeOverride(name = "interfaceCode", column = @Column(name = "INTERFACE_CODE" )) })
public SaTaskInterfacesId getId() {
return this.id;
}
public void setId(SaTaskInterfacesId id) {
this.id = id;
}
@Column(name = "SORT_ORDER" )
public Short getSortOrder() {
return this.sortOrder;
}
public void setSortOrder(Short sortOrder) {
this.sortOrder = sortOrder;
}
@Column(name = "ITEM_CSV", length = 50)
public String getItemCsv() {
return this.itemCsv;
}
public void setItemCsv(String itemCsv) {
this.itemCsv = itemCsv;
}
@Column(name = "PERSON_CODE_CSV", length = 150)
public String getPersonCodeCsv() {
return this.personCodeCsv;
}
public void setPersonCodeCsv(String personCodeCsv) {
this.personCodeCsv = personCodeCsv;
}
}
Deletion Query Sample
public void taskInterfaceDeletion(WorkFlowTaskInterface2Entity workFlowTaskInterface2Entity) {
baseORMDao.executeQuery("DELETE FROM WorkFlowTaskInterface2Entity entity WHERE entity.interfaceCode="+(long)58+" AND entity.processRuleId="+(long)112301+"");
}
错误是:
无法解析 属性:interfaceCode of: pk.gov.fbr.insys.entity.workflow.WorkFlowTaskInterface2Entity [DELETE FROM pk.gov.fbr.insys.entity.workflow.WorkFlowTaskInterface2Entity entity WHERE entity.interfaceCode=58 AND entity.processRuleId= 112301];嵌套异常是 org.hibernate.QueryException: 无法解析 属性: interfaceCode of: pk.gov.fbr.insys.entity.workflow.WorkFlowTaskInterface2Entity [DELETE FROM pk.gov.fbr.insys.entity.workflow.WorkFlowTaskInterface2Entity entity WHERE entity.interfaceCode=58 AND entity.processRuleId=112301]
从堆栈跟踪来看,这里的问题非常令人讨厌。 interfaceCode
属性 在 SaTaskInterfacesId
中声明并且此 class 不是 class 到 WorkFlowTaskInterface2Entity
的父级,因此找不到 属性 .
可嵌入Class
@Embeddable
public class SaTaskInterfacesId implements java.io.Serializable {
// Fields
/**
*
*/
private static final long serialVersionUID = -4070669691040083979L;
private Long processRuleId;
private Long interfaceCode;
// Constructors
/** default constructor */
public SaTaskInterfacesId() {
}
/** full constructor */
public SaTaskInterfacesId(Long processRuleId, Long interfaceCode) {
this.processRuleId = processRuleId;
this.interfaceCode = interfaceCode;
}
// Property accessors
@Column(name = "PROCESS_RULE_ID")
public Long getProcessRuleId() {
return this.processRuleId;
}
public void setProcessRuleId(Long processRuleId) {
this.processRuleId = processRuleId;
}
@Column(name = "INTERFACE_CODE")
public Long getInterfaceCode() {
return this.interfaceCode;
}
public void setInterfaceCode(Long interfaceCode) {
this.interfaceCode = interfaceCode;
}
public boolean equals(Object other) {
if ((this == other))
return true;
if ((other == null))
return false;
if (!(other instanceof SaTaskInterfacesId))
return false;
SaTaskInterfacesId castOther = (SaTaskInterfacesId) other;
return ((this.getProcessRuleId() == castOther.getProcessRuleId()) || (this
.getProcessRuleId() != null
&& castOther.getProcessRuleId() != null && this
.getProcessRuleId().equals(castOther.getProcessRuleId())))
&& ((this.getInterfaceCode() == castOther.getInterfaceCode()) || (this
.getInterfaceCode() != null
&& castOther.getInterfaceCode() != null && this
.getInterfaceCode()
.equals(castOther.getInterfaceCode())));
}
public int hashCode() {
int result = 17;
result = 37
* result
+ (getProcessRuleId() == null ? 0 : this.getProcessRuleId()
.hashCode());
result = 37
* result
+ (getInterfaceCode() == null ? 0 : this.getInterfaceCode()
.hashCode());
return result;
}
}
Entity Class
@Entity
@Table(name = "SA_TASK_INTERFACES")
public class WorkFlowTaskInterface2Entity extends BaseEntity {
private SaTaskInterfacesId id;
// private Long saWorkflowRules;
private Short sortOrder;
private String itemCsv;
private String personCodeCsv;
// Property accessors
@EmbeddedId
@AttributeOverrides({
@AttributeOverride(name = "processRuleId", column = @Column(name = "PROCESS_RULE_ID" )),
@AttributeOverride(name = "interfaceCode", column = @Column(name = "INTERFACE_CODE" )) })
public SaTaskInterfacesId getId() {
return this.id;
}
public void setId(SaTaskInterfacesId id) {
this.id = id;
}
@Column(name = "SORT_ORDER" )
public Short getSortOrder() {
return this.sortOrder;
}
public void setSortOrder(Short sortOrder) {
this.sortOrder = sortOrder;
}
@Column(name = "ITEM_CSV", length = 50)
public String getItemCsv() {
return this.itemCsv;
}
public void setItemCsv(String itemCsv) {
this.itemCsv = itemCsv;
}
@Column(name = "PERSON_CODE_CSV", length = 150)
public String getPersonCodeCsv() {
return this.personCodeCsv;
}
public void setPersonCodeCsv(String personCodeCsv) {
this.personCodeCsv = personCodeCsv;
}
}
Deletion Query Sample
public void taskInterfaceDeletion(WorkFlowTaskInterface2Entity workFlowTaskInterface2Entity) {
baseORMDao.executeQuery("DELETE FROM WorkFlowTaskInterface2Entity entity WHERE entity.interfaceCode="+(long)58+" AND entity.processRuleId="+(long)112301+"");
}
错误是:
无法解析 属性:interfaceCode of: pk.gov.fbr.insys.entity.workflow.WorkFlowTaskInterface2Entity [DELETE FROM pk.gov.fbr.insys.entity.workflow.WorkFlowTaskInterface2Entity entity WHERE entity.interfaceCode=58 AND entity.processRuleId= 112301];嵌套异常是 org.hibernate.QueryException: 无法解析 属性: interfaceCode of: pk.gov.fbr.insys.entity.workflow.WorkFlowTaskInterface2Entity [DELETE FROM pk.gov.fbr.insys.entity.workflow.WorkFlowTaskInterface2Entity entity WHERE entity.interfaceCode=58 AND entity.processRuleId=112301]
从堆栈跟踪来看,这里的问题非常令人讨厌。 interfaceCode
属性 在 SaTaskInterfacesId
中声明并且此 class 不是 class 到 WorkFlowTaskInterface2Entity
的父级,因此找不到 属性 .