package com.mysema.query.domain;

import javax.persistence.Entity;
import javax.persistence.MappedSuperclass;
import java.io.Serializable;

import org.junit.Test;
import static org.junit.Assert.assertNotNull;

public class Generic14Test {

    @Entity
    public static class UserAccount extends BaseReferencablePersistable<Long> {

    }

    @MappedSuperclass
    public static abstract class BaseReferencablePersistable<PK extends Serializable> extends BasePersistable<PK> {

    }

    @MappedSuperclass
    public static class BasePersistable<T extends Serializable> extends AbstractPersistable<T> implements UpdateInfo {

    }

    @MappedSuperclass
    public static abstract class AbstractPersistable<PK extends Serializable> implements Persistable<PK> {

    }

    public interface Persistable<T> {

    }

    public interface UpdateInfo {

    }

    @Test
    public void test() {
        assertNotNull(QGeneric14Test_UserAccount.userAccount);
        assertNotNull(QGeneric14Test_BaseReferencablePersistable.baseReferencablePersistable);
        assertNotNull(QGeneric14Test_BasePersistable.basePersistable);
        assertNotNull(QGeneric14Test_AbstractPersistable.abstractPersistable);
    }
}

@@ -38,175 +38,178 @@
 ort 
-javax.persistence.Entity;%0Aimport javax.persistence.MappedSuperclass;%0Aimport java.io.Serializable;%0A%0Aimport org.junit.Test;%0Aimport static org.junit.Assert.assertNotNull;
+static org.junit.Assert.assertNotNull;%0A%0Aimport java.io.Serializable;%0A%0Aimport javax.persistence.Entity;%0Aimport javax.persistence.MappedSuperclass;%0A%0Aimport org.junit.Test;%0A
 %0A%0Apu
@@ -616,32 +616,134 @@
 s UpdateInfo %7B%0A%0A
+        private T id;%0A%0A        @Override%0A        public T getId() %7B%0A            return id;%0A        %7D%0A%0A
     %7D%0A%0A    @Mapp
@@ -907,16 +907,35 @@
 ble%3CT%3E %7B
+%0A        T getId();
 %0A%0A    %7D%0A

Update test case for #750 to reflect the mismatched names