如何在hibernate应用程序中为复合主键设置值
我有一个javabean/model类,带有JPA注释,如下所示。此类有一个复合键,如下所示。在如何在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
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=?]