java - 使用 hibernate 从主键复合的表中读取数据

标签 java database hibernate

我的项目中有这些 POJO 类。

 public class MerchantChainUser extends com.avanza.ni.common.dto.AbstractDTO
    implements java.io.Serializable {

private long chainId;
private CompositePK compositePK;


public MerchantChainUser() {

}

public void setChainId(long chainId) {
    this.chainId = chainId;
}
public long getChainId() {
    return chainId;
}

public void setCompositePK(CompositePK compositePK) {
    this.compositePK = compositePK;
}

public CompositePK getCompositePK() {
    return compositePK;
}
}

AND    

public class CompositePK implements Serializable {

private long merchantId;
private long userId;

public void setMerchantId(long merchantId) {
    this.merchantId = merchantId;
}

public long getMerchantId() {
    return merchantId;
}

public void setUserId(long userId) {
    this.userId = userId;
}

public long getUserId() {
    return userId;
}
 }

MerchantUserChain 的 hbm.xml 文件是

 <hibernate-mapping>
<class name="com.avanza.ni.portal.dto.MerchantChainUser" table="MERCHANT_CHAIN_USER">
    <composite-id name="compositePK">
        <key-property name="merchantId" type="long" column="MERCHANT_ID"></key-property>
        <key-property name="userId" type="long" column="MERCHANT_USER_ID"></key-property>
    </composite-id>
    <property name="chainId" type="long">
        <column name="MERCHANT_CHAIN_ID" length="38" />
    </property>
</class>

现在我想要的是我必须只使用 MERCHANT_USER_ID 从表中读取数据。我能够从表中检索全部数据,但现在我想将条件设置为 Only give me those row that MERCHANT_USER_ID is specific。不知道怎么写数据条件。

最佳答案

我放评论的答案已经被删除,所以我把它贴在这里:D

Criteria crit = session.createCriteria(MerchantChainUser.class)
.add(Restrictions.eq("compositePK.userId", userId));

或者用hql

session.createQuery("from MerchantChainUser where compositePK.userId = :userid").setParameter("userid",userid);

关于java - 使用 hibernate 从主键复合的表中读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17828185/

相关文章:

java - 数据的 session.update() 或 session.save() 没有反射(reflect)在数据库中?

java - DDMS 分配跟踪器填充了 "SimpleListIterator"

ruby-on-rails - 跟踪应用程序中的产品销售情况并选择最畅销产品的最佳方式是什么?

java.lang.IllegalArgumentException "Can not set DAO field"与 Spring 4 & Hibernate 4

hibernate - hibernateTemplate Flush() 和 clear() 方法有什么区别?

java eclipse indigo 执行可执行 jar 时出现问题(属性文件位于项目的外部文件夹中)

java - Spark : Task not serializable Exception in forEach loop in Java

php - 需要输入动态查询输出脚本

asp.net-mvc - 防止授权用户编辑不属于他的数据

java - Hibernate:在不同线程中查找刚刚持久化的对象