From 1ddc103582d5077ea4adf7475c11bd1ee1314967 Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Wed, 2 Jul 2014 23:56:42 +1200 Subject: [PATCH] Fix for #157 - Regression for @OrderBy on a @ManyToMany property due to change from issue 154 --- .../ebeaninternal/server/deploy/BeanPropertyAssocMany.java | 5 +++-- .../java/com/avaje/tests/m2m/TestM2MDeleteNoCascade.java | 7 +++++++ src/test/java/com/avaje/tests/model/basic/MnocUser.java | 2 ++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanPropertyAssocMany.java b/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanPropertyAssocMany.java index 156b3a1b2..ac0b83a4b 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanPropertyAssocMany.java +++ b/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanPropertyAssocMany.java @@ -153,8 +153,9 @@ public class BeanPropertyAssocMany extends BeanPropertyAssoc { if (i > 0) { sb.append(", "); } - // these fkcolumns always on base table hence t0 as alias - sb.append("t0.").append(exportedProperties[i].getForeignDbColumn()); + // these fk columns are either on the intersection (int_) or base table (t0) + String fkTableAlias = isManyToMany() ? "int_" : "t0"; + sb.append(fkTableAlias).append(".").append(exportedProperties[i].getForeignDbColumn()); } if (fetchOrderBy != null) { sb.append(", ").append(fetchOrderBy); diff --git a/src/test/java/com/avaje/tests/m2m/TestM2MDeleteNoCascade.java b/src/test/java/com/avaje/tests/m2m/TestM2MDeleteNoCascade.java index 38d275e29..f7698f031 100644 --- a/src/test/java/com/avaje/tests/m2m/TestM2MDeleteNoCascade.java +++ b/src/test/java/com/avaje/tests/m2m/TestM2MDeleteNoCascade.java @@ -1,5 +1,7 @@ package com.avaje.tests.m2m; +import java.util.List; + import javax.persistence.PersistenceException; import org.junit.Assert; @@ -27,6 +29,11 @@ public class TestM2MDeleteNoCascade extends BaseTestCase { Ebean.save(u0); + MnocUser loadedUser = Ebean.find(MnocUser.class, u0.getUserId()); + List validRoles = loadedUser.getValidRoles(); + + Assert.assertEquals(2, validRoles.size()); + try { Ebean.delete(u0); Assert.assertTrue("expecting an exception", false); diff --git a/src/test/java/com/avaje/tests/model/basic/MnocUser.java b/src/test/java/com/avaje/tests/model/basic/MnocUser.java index 124b409a2..c17a3cf6f 100644 --- a/src/test/java/com/avaje/tests/model/basic/MnocUser.java +++ b/src/test/java/com/avaje/tests/model/basic/MnocUser.java @@ -7,6 +7,7 @@ import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.ManyToMany; +import javax.persistence.OrderBy; import javax.persistence.Version; @Entity @@ -22,6 +23,7 @@ public class MnocUser { // No cascade REMOVE @ManyToMany(cascade=CascadeType.PERSIST) + @OrderBy("roleName") List validRoles; public MnocUser() {