Lotus教程、Java教程、Java虚拟机、Java软件综合开发社区

Lotus、Domino、Java、C#、Web、数据库综合开发教程、资料社区

Hibernate使用Criteria对复合主键的处理、查询



Published by admin on 01月 18, 2008

Hibernate复合主键,如果把一个表分成俩部分,一部分是<key-property>,一部分是<property>时,一般的处理相信大家都知道.但如果通过criteria对复合主键进行处理,那么会出现个问题.criteria.add(Expression.eq(”字段映射名”,值)),这个地方的字段映射名应该怎么写?网上有资料说通过别名来操作到是个不错的方法,但下面是讨论通过直接把表的字段都影射成为复合主健,只映射为一个类进行直接处理;

  <class name=”com.hostel.db.entity.log.LogId” table=”LOG” schema=”TEGUAN”>
        <composite-id>
            <key-property name=”logId” type=”java.lang.String”>
                <column name=”LOG_ID” length=”10″ />
            </key-property>
            <key-property name=”logData” type=”java.lang.String”>
                <column name=”LOG_DATA” length=”30″ />
            </key-property>
            <key-property name=”logType” type=”java.lang.String”>
                <column name=”LOG_TYPE” length=”2″ />
            </key-property>
            <key-property name=”logContent” type=”java.lang.String”>
                <column name=”LOG_CONTENT” length=”1000″ />
            </key-property>
            <key-property name=”logUser” type=”java.lang.String”>
                <column name=”LOG_USER” length=”30″ />
            </key-property>
            <key-property name=”logIp” type=”java.lang.String”>
                <column name=”LOG_IP” length=”16″ />
            </key-property>
        </composite-id>
     </class>

通过这样,只需要操作一个类来完成。这样对于使用criteria来查询查询是个不错的选择;

使用Criteria查询不能通过主健进行查询(兴许是笔者自己太弱了),这时就首先需要把主健字段屏蔽掉。如下代码:

criteria.add(Example.create(hostel)
     .enableLike(MatchMode.ANYWHERE)  //模糊查询
     .excludeProperty(”registerdate”) //取消按照注册时间、审核时间、旅馆ID 进行示例查询
     .excludeProperty(”auditdate”)
     .excludeProperty(”gasthausId”));

这样就可以屏蔽掉按某些字段查询,然后在通过criteria.add(Expression.eq(”",”"))来进行查询了;

注:如果查询字段没有通过.excludeProperty屏蔽示例查询,那么 .enableLike(MatchMode.ANYWHERE)  //模糊查询 将会自动进行模糊查询,而不用使用Expression.like(”字段名”,”%”+值+”%”);



【版权说明】:本网页上有部分内容来源于网上收集,但不能保证资料的完整性和准确性,仅提供参考和学习。如有侵权请立即通知我们,我们将立即删除,谢谢合作!

Add A Comment