Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
复合密钥的JPA映射问题_Jpa_Nhibernate Mapping_Mapping_Eclipselink_Jpa 2.0 - Fatal编程技术网

复合密钥的JPA映射问题

复合密钥的JPA映射问题,jpa,nhibernate-mapping,mapping,eclipselink,jpa-2.0,Jpa,Nhibernate Mapping,Mapping,Eclipselink,Jpa 2.0,我有一张下面的地图 @Entity @Table(name = "auctions") public class Auction{ . . @OneToMany(cascade = CascadeType.ALL, mappedBy = "auction") private List<AuctionParamValue> auctionParamValueList; . . } @Entity @Table(name = "auction_param_values

我有一张下面的地图

@Entity
@Table(name = "auctions")
public class Auction{
.
.
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "auction")
    private List<AuctionParamValue> auctionParamValueList;
.
.
}


@Entity
@Table(name = "auction_param_values")
public class AuctionParamValue {

    @EmbeddedId
    protected AuctionParamValuePK auctionParamValuePK;

    @JoinColumn(name = "auction_param_id", referencedColumnName = "auction_param_id",updatable=false,insertable=false)
    @ManyToOne 
        private AuctionParam auctionParam;

    @JoinColumn(name = "auction_id", referencedColumnName  = "auction_id",updatable=false,insertable=false)
    @ManyToOne @MapsId("auctionId") 
        private Auction auction;
}

@Embeddable
public class AuctionParamValuePK {
    @Id 
    @Basic(optional = false)
    @Column(name = "auction_id")
    private long auctionId;

    @Id
    @Basic(optional = false)
    @Column(name = "auction_param_id")
    private int auctionParamId;
}

@Entity
@Table(name = "auction_params")    
public class AuctionParam {
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "auctionParam")
    private List<AuctionTypeParam> auctionTypeParamList;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "auctionParam")
    private List<AuctionParamValue> auctionParamValueList;
 }

对于
Auction
-
AuctionParamValue
关系,您需要执行以下操作:

@Entity @Table(name = "auctions") 
public class Auction {
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "auction")
    private List<AuctionParamValue> auctionParamValueList;
    ...
}   

@Entity @Table(name = "auction_param_values")
public class AuctionParamValue {
     @EmbeddedId
     protected AuctionParamValuePK auctionParamValuePK;

     @ManyToOne @MapsId("auctionId")
     private Auction auction;

     ...
}
@Entity@Table(name=“拍卖”)
公开拍卖{
@OneToMany(cascade=CascadeType.ALL,mappedBy=“拍卖”)

私有列表,第2.4.1.3节。

mappedBy
引用的
auction
auctionParam
属性在哪里?它们没有映射。我应该如何映射它们?感谢引用链接。我现在正在查看它。我尝试了@MapsId,但它给出了相同的错误:(苏拉布:等等,
auctionParamId
null
,因为你没有给它赋值,你还期望它有什么其他行为。还要注意的是,你不能将
@GeneratedValue
与派生标识一起使用。我知道了,我应该自己填充auctionParamId,但当我坚持“拍卖”时,auctionId会怎么样我应该正确获取上次插入拍卖的auctionId?现在错误无法添加或更新子行:外键约束失败(
portaldemo
auction\u param\u values
,约束
auction\u param\u values\u auction\u id\u fk
外键(
auction\u id
)引用
auctions
auction\u id
)插入拍卖参数值(拍卖参数值、创建值、最后一次更新值、拍卖参数id、拍卖id)值(?、、?、?)绑定=>[2011-01-12 04:00:00,2011-01-25 22:30:52.493,2011-01-25 22:30:52.493,1,0]查询:InsertObjectQuery(com.eaportal.domain.AuctionParamValue[auctionParamValuePK=com.eaportal.domain.auctionValuePK][auctionId=0,auctionParamId=1])我不确定在保存auction命令对象时如何将auction_id作为上述查询中最后插入的id:(
@Entity @Table(name = "auctions") 
public class Auction {
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "auction")
    private List<AuctionParamValue> auctionParamValueList;
    ...
}   

@Entity @Table(name = "auction_param_values")
public class AuctionParamValue {
     @EmbeddedId
     protected AuctionParamValuePK auctionParamValuePK;

     @ManyToOne @MapsId("auctionId")
     private Auction auction;

     ...
}