mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
#2317 - Incorrect SQL generated for @IdClass with fetch() on ToMany path
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
package org.tests.model.bridge;
|
||||
|
||||
import javax.persistence.Embeddable;
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
|
||||
@Embeddable
|
||||
public class BDManyId {
|
||||
|
||||
private final UUID siteId;
|
||||
private final UUID userId;
|
||||
private final String name;
|
||||
|
||||
public BDManyId(UUID siteId, UUID userId, String name) {
|
||||
this.siteId = siteId;
|
||||
this.userId = userId;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
BDManyId bdManyId = (BDManyId) o;
|
||||
return siteId.equals(bdManyId.siteId) && userId.equals(bdManyId.userId) && name.equals(bdManyId.name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(siteId, userId, name);
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,7 @@
|
||||
package org.tests.model.bridge;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.IdClass;
|
||||
import javax.persistence.Version;
|
||||
import javax.persistence.*;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
@Entity
|
||||
@@ -18,6 +16,10 @@ public class BSiteUserD {
|
||||
|
||||
private BAccessLevel accessLevel;
|
||||
|
||||
@OneToMany(cascade = CascadeType.PERSIST)
|
||||
@JoinColumns({@JoinColumn(name="site_id", referencedColumnName = "site_id"), @JoinColumn(name="user_id", referencedColumnName = "user_id")})
|
||||
private List<BSiteUserDMany> children;
|
||||
|
||||
@Version
|
||||
private long version;
|
||||
|
||||
@@ -58,4 +60,12 @@ public class BSiteUserD {
|
||||
public void setVersion(long version) {
|
||||
this.version = version;
|
||||
}
|
||||
|
||||
public List<BSiteUserDMany> children() {
|
||||
return children;
|
||||
}
|
||||
|
||||
public void setChildren(List<BSiteUserDMany> children) {
|
||||
this.children = children;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
package org.tests.model.bridge;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.UUID;
|
||||
|
||||
@Entity
|
||||
@IdClass(BDManyId.class)
|
||||
public class BSiteUserDMany {
|
||||
|
||||
@Id
|
||||
private UUID siteId;
|
||||
@Id
|
||||
private UUID userId;
|
||||
@Id
|
||||
String name;
|
||||
|
||||
String many;
|
||||
|
||||
@Version
|
||||
long version;
|
||||
|
||||
public UUID siteId() {
|
||||
return siteId;
|
||||
}
|
||||
|
||||
public BSiteUserDMany siteId(UUID siteId) {
|
||||
this.siteId = siteId;
|
||||
return this;
|
||||
}
|
||||
|
||||
public UUID userId() {
|
||||
return userId;
|
||||
}
|
||||
|
||||
public BSiteUserDMany userId(UUID userId) {
|
||||
this.userId = userId;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String name() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public BSiteUserDMany name(String name) {
|
||||
this.name = name;
|
||||
return this;
|
||||
}
|
||||
|
||||
public long version() {
|
||||
return version;
|
||||
}
|
||||
|
||||
public void setVersion(long version) {
|
||||
this.version = version;
|
||||
}
|
||||
|
||||
public String many() {
|
||||
return many;
|
||||
}
|
||||
|
||||
public void setMany(String many) {
|
||||
this.many = many;
|
||||
}
|
||||
}
|
||||
@@ -41,6 +41,24 @@ public class TestIdClassScalar extends BaseTestCase {
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void fetchMany() {
|
||||
UUID siteId = UUID.randomUUID();
|
||||
UUID userId = UUID.randomUUID();
|
||||
|
||||
BSiteUserD access = new BSiteUserD(BAccessLevel.ONE, siteId, userId);
|
||||
DB.save(access);
|
||||
|
||||
final List<BSiteUserD> found = DB.find(BSiteUserD.class)
|
||||
.fetch("children")
|
||||
.where().eq("siteId", siteId)
|
||||
.findList();
|
||||
|
||||
assertThat(found).hasSize(1);
|
||||
|
||||
DB.delete(BSiteUserD.class, new BEmbId(siteId, userId));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void insertBatch() {
|
||||
UUID siteId = UUID.randomUUID();
|
||||
|
||||
Reference in New Issue
Block a user