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));
私の方法が間違っていることはわかっています。任意のビューまたは提案。
ありがとう。