diff --git a/jOOQ/src/test/java/org/jooq/test/RecordMappingTest.java b/jOOQ/src/test/java/org/jooq/test/RecordMappingTest.java index c91c0ef0ea..1c94245d39 100644 --- a/jOOQ/src/test/java/org/jooq/test/RecordMappingTest.java +++ b/jOOQ/src/test/java/org/jooq/test/RecordMappingTest.java @@ -42,6 +42,7 @@ package org.jooq.test; import static org.jooq.impl.DSL.field; +import static org.jooq.tools.reflect.Reflect.accessible; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; @@ -53,6 +54,7 @@ import javax.persistence.Id; import org.jooq.Field; import org.jooq.Record1; import org.jooq.Record2; +import org.jooq.Record4; import org.jooq.Result; import org.junit.Test; @@ -182,6 +184,38 @@ public class RecordMappingTest extends AbstractTest { } } + @Test + public void testInheritance() throws Exception { + + // [#3614] [#3643] Check on inheritance of fields + Field a = field("a", Boolean.class); + Field b = field("b", Boolean.class); + Field c = field("c", Boolean.class); + Field d = field("d", Boolean.class); + Record4 record = create.newRecord(a, b, c, d); + record.setValue(a, true); + record.setValue(b, true); + record.setValue(c, true); + record.setValue(d, true); + + Sub pojo = record.into(Sub.class); + assertTrue(pojo.a); + assertTrue(pojo.b); + assertTrue(pojo.c); + assertTrue((Boolean) accessible(Super.class.getDeclaredField("d")).get(pojo)); + } + + static class Sub extends Super { + + } + + static class Super { + public boolean a; + protected boolean b; + boolean c; + private boolean d; + } + @Test public void testIdAnnotation() throws Exception { Field field = field("xx", Long.class);