mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
#1101 - findNative() on a bean with an associated @OneToOne (with the PK being derived from the parent) maps incorrectly
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
package org.tests.model.onetoone;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.OneToOne;
|
||||
import javax.persistence.PrimaryKeyJoinColumn;
|
||||
|
||||
@Entity
|
||||
public class OtoBChild {
|
||||
|
||||
@Id
|
||||
@Column(name = "master_id")
|
||||
Integer id;
|
||||
|
||||
String child;
|
||||
|
||||
@OneToOne
|
||||
@PrimaryKeyJoinColumn(name = "master_id", referencedColumnName = "id")
|
||||
OtoBMaster master;
|
||||
|
||||
public Integer getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Integer id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getChild() {
|
||||
return child;
|
||||
}
|
||||
|
||||
public void setChild(String child) {
|
||||
this.child = child;
|
||||
}
|
||||
|
||||
public OtoBMaster getMaster() {
|
||||
return master;
|
||||
}
|
||||
|
||||
public void setMaster(OtoBMaster master) {
|
||||
this.master = master;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package org.tests.model.onetoone;
|
||||
|
||||
import javax.persistence.CascadeType;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.OneToOne;
|
||||
|
||||
@Entity
|
||||
public class OtoBMaster {
|
||||
|
||||
@Id
|
||||
Long id;
|
||||
|
||||
String name;
|
||||
|
||||
@OneToOne(cascade = CascadeType.ALL, mappedBy = "master")
|
||||
OtoBChild child;
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public OtoBChild getChild() {
|
||||
return child;
|
||||
}
|
||||
|
||||
public void setChild(OtoBChild child) {
|
||||
this.child = child;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package org.tests.model.onetoone;
|
||||
|
||||
import io.ebean.BaseTestCase;
|
||||
import io.ebean.Ebean;
|
||||
import io.ebean.EbeanServer;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
public class TestOneToOneImportedPkNative extends BaseTestCase {
|
||||
|
||||
@Test
|
||||
public void native_with_o2oAndImportedPrimaryKey() {
|
||||
|
||||
EbeanServer server = Ebean.getDefaultServer();
|
||||
server.find(OtoBMaster.class).delete();
|
||||
|
||||
OtoBMaster one = new OtoBMaster();
|
||||
one.setName("hello");
|
||||
Ebean.save(one);
|
||||
|
||||
OtoBMaster m = server.findNative(OtoBMaster.class, "select * from oto_bmaster").findOne();
|
||||
|
||||
assertThat(m.getId()).isEqualTo(one.getId());
|
||||
assertThat(m.getName()).isEqualTo(one.getName());
|
||||
assertThat(m.getChild()).isNull();
|
||||
|
||||
OtoBMaster m2 = server.find(OtoBMaster.class, one.getId());
|
||||
assertThat(m2.getId()).isEqualTo(one.getId());
|
||||
assertThat(m2.getName()).isEqualTo(one.getName());
|
||||
assertThat(m2.getChild()).isNull();
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user