3

user_、userTracker、userTrackerPathの3つのテーブルがあります

user_ は Pk として userId を持っています。userTracker の Fk である userTracker は、userTrackerPath の Fk である pk として UserTrackerId を持ち、userTrackerPath は Pk として userTrackerPathId を持ちます。

user_ テーブルにはフィールド firstName、LastName、loginIp、lastLoginIp があります userTracker にはフィールド remoteAddr、remoteHost があります userTrackerPath にはフィールド path_、pathDate があります

これらはすべて私が望むファイルです。

SQL クエリを作成しましたが、正常に実行されましたが、 Dynamic query を使用して結果が必要です。

これが私のSQLクエリです。

select concat(U.firstName," ",U.lastName) as     FullName,U.loginIp,U.lastLoginIp,UT.remoteAddr,substring(UT.modifiedDate,1,10) as Date,UTP.path_ from demo.User_ U, demo.UserTracker UT, demo.UserTrackerPath UTP where ((U.userId=UT.userId) and (UT.userTrackerId=UTP.userTrackerId));

プロジェクションを使用して動的クエリを作成しましたが、どのようにそれらに参加するのか混乱しています。

//Dynamic Query For User Class

        DynamicQuery dynamicQuery_user = DynamicQueryFactoryUtil.forClass(User.class,PortalClassLoaderUtil.getClassLoader())
                .setProjection(ProjectionFactoryUtil.property("userId"))
                .setProjection(ProjectionFactoryUtil.property("firstName"))
                .setProjection(ProjectionFactoryUtil.property("lastName"))
                .setProjection(ProjectionFactoryUtil.property("loginIp"))
                .setProjection(ProjectionFactoryUtil.property("lastLoginIp"));

        //Dynamic Query For User and UserTracker Class

        DynamicQuery dynamicQuery_userTracker  = DynamicQueryFactoryUtil.forClass(UserTracker.class,PortalClassLoaderUtil.getClassLoader())
                .setProjection(ProjectionFactoryUtil.property("modifiedDate"))
                .setProjection(ProjectionFactoryUtil.property("remoteAddr"));


        //Dynamic Query for UserTracker and UserTrackerPath

        DynamicQuery dynamicQuery_userTrackerPath  = DynamicQueryFactoryUtil.forClass(UserTrackerPath.class,PortalClassLoaderUtil.getClassLoader())
                .setProjection(ProjectionFactoryUtil.property("path_"))
                .setProjection(ProjectionFactoryUtil.property("pathDate"));

また、試してみました..

        dynamicQuery_userTracker.add(PropertyFactoryUtil.forName("userId").in(dynamicQuery_user));

        dynamicQuery_userTrackerPath.add(PropertyFactoryUtil.forName("userTrackerId").in(dynamicQuery_userTracker));

私の方法が間違っていることはわかっています。任意のビューまたは提案。

ありがとう。

4

1 に答える 1

1

Jay DynamicQuery API との結合はできないと思います。in メソッドと notin メソッドを使用してサブクエリを実行できます。

于 2014-03-18T15:02:41.073 に答える