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
如何在hibernate应用程序中为复合主键设置值_Hibernate_Jpa - Fatal编程技术网

如何在hibernate应用程序中为复合主键设置值

如何在hibernate应用程序中为复合主键设置值,hibernate,jpa,Hibernate,Jpa,我有一个javabean/model类,带有JPA注释,如下所示。此类有一个复合键,如下所示。在DAO.java中,如何设置此复合键的键 @EmbeddedId @AttributeOverrides({ @AttributeOverride(name = "ratioFunctionId", column = @Column(name = "ratio_function_id", nullable = false, scale = 0)), @AttributeOverride

我有一个javabean/model类,带有JPA注释,如下所示。此类有一个复合键,如下所示。在
DAO.java
中,如何设置此复合键的键

@EmbeddedId
@AttributeOverrides({
    @AttributeOverride(name = "ratioFunctionId", column = @Column(name = "ratio_function_id", nullable = false, scale = 0)),
    @AttributeOverride(name = "expressionId", column = @Column(name = "expression_id", nullable = false, scale = 0))
})
public RatioFunctionExpressionId getId() {
    return this.id;
}

public void setId(RatioFunctionExpressionId id) {
    this.id = id;
}

要设置此属性的值,只需创建一个新实例并分配它:

RatioFunctionExpressionId newId = new RatioFunctionExpressionId();
newId.setRatioFunctionId(aFunctionId);
newId.setExpressionId(anExpressionId);
aRatioFunctionExpression.setId(newId);

请记住,作为
RatioFunctionExpressionId
一个
@Embeddeble
,它不需要自己的id,因为它本身并不表示实体。它只是为了提供属性定义的分组,以便于组合和模块化。

@nagch好极了,我又读了一遍这个问题,发现你在问别的问题。我已经更新了答案。为了更清楚。我想为此创建DAO。我已经写了save()。现在要测试daoimpl.java,我必须编写一个junit方法来测试它。这里我想知道如何设置这个java bean的复合键?只需实例化一个
RatioFunctionExpressionId
并调用
RatioFunctionExpression\setId()
。你看到更新的答案了吗?嗨,哈维,你能帮我解决以下错误吗:当我运行测试用例时:路径表达式以复合值结尾:ratiofunct0_uu0.id[来自ratiofuncationexpression ratiofuncationexpression,其中ratiofuncationexpression.id=?];嵌套异常为org.hibernate.QueryException:路径表达式以复合值结尾:ratiofunct0_Ut0.id[来自com.moodys.mis.cfg.ratios.models.RatioFunctionExpression RatioFunctionExpression,其中RatioFunctionExpression.id=?]