簡體   English   中英

HQL更新問題

[英]HQL Update issue

我有兩個實體。 Data_mart和entity_data。 entity_data擴展了data_mart。 我在data_mart和entity_data中都有id列。 實體市場中的data_id是data_mart的前向鍵(那里的Pkey是id)。

@Entity
@Table(name = "data_mart")
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "type")
public class DataMaster {

/** The id. */
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(unique = true, nullable = false)
private Long id;
/** The type. */
private String type;

/** The created by. */
private String createdBy;
.....
 }

@Entity
@Table(name = "entity_data")
@PrimaryKeyJoinColumn(name = "dataId")
@DiscriminatorValue("FILE")
@Where(clause = "active = '1'")
public class EntityData extends DataMaster {

/** The data id. */
 @Column(insertable = false, updatable = false)
    private Long dataId;

/** The delimiter. */
private String delimiter;
....
 }

子表的表結構如下

CREATE TABLE entity_data (
id bigint(20) NOT NULL AUTO_INCREMENT,
data_id bigint(20) NOT NULL, 
delimiter varchar(20) DEFAULT NULL,
file_path `varchar(200) DEFAULT NULL,
...
)

當我嘗試使用HQL查詢更新表entity_data時,以下是由Hibernate形成的中間查詢

create temporary table if not exists HT_entity_data (id bigint not null);
insert into HT_entity_data
select entitydata0_.data_id as data_id from entity_data 
entitydata0_ inner join data_master entitydata0_1_ on   
 entitydata0_.data_id=entitydata0_1_.id where entitydata0_.file_path='abcdd'


 update entity_data set file_path='new_path' 
 where (id) IN  (select data_id from HT_entity_data)

上面的查詢給出了錯誤的結果。 在以上更新語句的where子句中,id即將到來。 應該是data_id。

我不知道如何采取?

子類中不得包含ID。 它擴展了已經具有ID的基類。 JOINED繼承策略中,與子類關聯的表的主鍵也是與基類關聯的表的主鍵的外鍵。

參見文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM