#2044 - Using @AttributeOverrides when override nullable

This commit is contained in:
rob bygrave
2020-08-31 14:38:23 +12:00
parent dbe24a4041
commit dd880ac09b
5 changed files with 84 additions and 12 deletions
@@ -58,7 +58,7 @@ class BeanEmbeddedMetaFactory {
}
private static boolean dbNullable(Column override, BeanProperty source) {
return (override != null && !override.nullable()) ? override.nullable() : source.isNullable();
return (override != null) ? override.nullable() : source.isNullable();
}
private static int dbLength(Column override, BeanProperty source) {
+16 -4
View File
@@ -1,4 +1,4 @@
-- Generated by ebean unknown at 2020-08-24T21:46:04.720412Z
-- Generated by ebean unknown at 2020-08-31T02:36:16.679053Z
create table asimple_bean (
id bigint generated by default as identity not null,
name varchar(255),
@@ -1341,11 +1341,11 @@ create table einvoice (
invoice_date timestamp,
state integer,
person_id bigint,
ship_street varchar(255),
ship_street varchar(255) not null,
ship_suburb varchar(255),
ship_city varchar(255),
ship_status varchar(3),
bill_street varchar(255),
bill_street varchar(255) not null,
bill_suburb varchar(255),
bill_city varchar(255),
bill_status varchar(3),
@@ -1421,7 +1421,7 @@ create table eperson (
id bigint generated by default as identity not null,
name varchar(255),
notes varchar(255),
street varchar(255),
street varchar(255) not null,
suburb varchar(255),
addr_city varchar(255),
addr_status varchar(3),
@@ -1443,6 +1443,18 @@ create table eperson2 (
constraint pk_eperson2 primary key (id)
);
create table eperson3 (
id bigint generated by default as identity not null,
name varchar(255),
street varchar(255),
suburb varchar(255),
city varchar(255),
status varchar(3),
version bigint not null,
constraint ck_eperson3_status check ( status in ('ONE','TWO')),
constraint pk_eperson3 primary key (id)
);
create table e_person_online (
id bigint generated by default as identity not null,
email varchar(127),
@@ -1,23 +1,21 @@
package org.tests.embedded;
import io.ebean.Ebean;
import io.ebean.DB;
import org.junit.Test;
import org.tests.model.embedded.EAddress;
import org.tests.model.embedded.EAddressStatus;
import org.tests.model.embedded.EPerson;
import org.tests.model.embedded.EPerson3;
public class TestEmbeddedEmpty {
@Test
public void insertEmptyEmbedded() {
EPerson person = new EPerson();
EPerson3 person = new EPerson3();
person.setName("with empty embedded");
// set empty embedded bean
person.setAddress(new EAddress());
Ebean.save(person);
DB.save(person);
// treat all embedded properties as loaded
person.getAddress().getCity();
@@ -28,7 +26,7 @@ public class TestEmbeddedEmpty {
EAddressStatus.TWO.doIt();
Ebean.find(EPerson.class)
DB.find(EPerson3.class)
.where().eq("address.status", EAddressStatus.TWO)
.findList();
@@ -1,5 +1,6 @@
package org.tests.model.embedded;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
@@ -7,6 +8,7 @@ import javax.persistence.Enumerated;
@Embeddable
public class EAddress {
@Column(nullable = false)
String street;
String suburb;
@@ -0,0 +1,60 @@
package org.tests.model.embedded;
import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Version;
@Entity
public class EPerson3 {
@Id
long id;
@Version
long version;
String name;
@Embedded
@AttributeOverrides({
@AttributeOverride(name = "street", column = @Column())
})
EAddress address;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public long getVersion() {
return version;
}
public void setVersion(long version) {
this.version = version;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public EAddress getAddress() {
return address;
}
public void setAddress(EAddress address) {
this.address = address;
}
}