0

以下に示すエンティティがあります。注釈 @SecondaryTable によってマップされた 2 つのテーブルがあります。2 つのテーブルの PrimaryKey の名前は両方とも「resource_id」です。HQLを実行すると

delete AssetProjectProposalInfoEntity e where e.resourceId=:rid

列のあいまいな定義エラーが発生しました。

import ...

@Entity
@Table(name = "ASSET_PROJECT_INFO", schema = "CORE_WAC")
@SecondaryTable(name="ASSET_PROJECT_PROPOSAL_INFO", schema="CORE_WAC")
public class AssetProjectProposalInfoEntity
{   
    @Id
    @Column(name = "RESOURCE_ID")
    @GeneratedValue(generator="UUIdentifier")
    @GenericGenerator(name="UUIdentifier", strategy = "uuid")
    private String resourceId;

    @Column(name = "PROJECT_NAME")
    private String projectName;


    @Column(table="ASSET_PROJECT_PROPOSAL_INFO", name="PROJECT_TYPE")
    private String projectType;


    @Column(table="ASSET_PROJECT_PROPOSAL_INFO", name="APPLY_UNIT_ID")
    private String applyUnitId;
    ...

}

コンソール ログは次のとおりです。SQL の where 句が RESOURCE_ID=? であることを示しています。ですが、assetproje0_.RESOURCE_ID=? である必要があります。おもう。どんな体も助けてくれますか? ありがとう:)

Hibernate: insert into HT_ASSET_PROJECT_INFO select assetproje0_.RESOURCE_ID as 
RESOURCE_ID from CORE_WAC.ASSET_PROJECT_INFO assetproje0_ left outer join 
CORE_WAC.ASSET_PROJECT_PROPOSAL_INFO assetproje0_1_ on 
assetproje0_.RESOURCE_ID=assetproje0_1_.RESOURCE_ID where RESOURCE_ID=?

Hibernate: delete from HT_ASSET_PROJECT_INFO
4

1 に答える 1

0

2 つのネイティブ クエリを使用する

    String deleteTable2 =
            "DELETE CORE_WAC.ASSET_PROJECT_PROPOSAL_INFO act where RESOURCE_ID IN (:resourceIdsList)";
    Query qDeleteTable2 = getEntityManager().createNativeQuery(deleteTable2);
    qDeleteTable2.setParameter("resourceIdsList", resourceIdsList);
    qDeleteTable2.executeUpdate();

    String deleteTable1 =
            "DELETE CORE_WAC.ASSET_PROJECT_INFO act where RESOURCE_ID IN (:resourceIdsList)";
    Query qDeleteTable1 = getEntityManager().createNativeQuery(deleteTable1);
    qDeleteTable1.setParameter("resourceIdsList", resourceIdsList);
    qDeleteTable1.executeUpdate();
于 2016-12-22T08:52:51.003 に答える