我试图了解继承是如何发挥作用的!但还没有成功。
所以,我有这样的超类:
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
abstract class SuperClass extends Model {
@Id
@GeneratedValue(strategy = GenerationType.TABLE, generator = "SEQ_TABLE")
@TableGenerator(name = "SEQ_TABLE")
Long id;
int testVal;
}
和2个继承类:
@Entity
public class Sub extends SuperClass {
String name;
@Override
public String toString() {
return name;
}
}
@Entity
public class Sub1 extends SuperClass {
String name;
@Override
public String toString() {
return name;
}
}
我还有 2 个用于继承类的控制器:
public class Subs and Sub1s extends CRUD {
}
应用程序启动后,我在 MySQL 数据库中收到了我的模型的 2 个表(Sub 和 Sub 1),其结构如下:id大整数(20),namevarchar(255)。没有testVal这是超类中的。
当我尝试创建新对象时SubCRUD 接口中的类我收到这样的错误:模板 {module:crud}/app/views/tags/crud/form.html 中发生执行错误。引发的异常是MissingPropertyException:没有这样的属性:类的 testVal:models.Sub。
在 {module:crud}/app/views/tags/crud/form.html 中(第 64 行左右)#{crud.number字段名称:field.name, value:(currentObject ? currentObject[field.name] : null) /}
- 我应该怎么做才能正确生成继承模型的 MySQL 表并修复错误?
- 是否可以为多个继承类使用一个超级控制器?
嗯,感谢斯德斯波利特,我做了一些实验。这是我得到的:
超类:
@MappedSuperclass
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class SuperClass extends Model {
}
继承类:
@Entity
public class Sub extends SuperClass {
}
“超级控制器”我是这样制作的:
@With({Secure.class, SuperController.class})
@CRUD.For(Sub.class)
public class Subs extends CRUD {
}
@With({Secure.class, SuperController.class})
@CRUD.For(Sub1.class)
public class Sub1s extends CRUD {
}
@CRUD.For(子类)用于告诉拦截器应该在哪个类上工作
public class SuperController extends Controller {
@After/Before/Whatever
public static void doSomething() {
String actionMethod = request.actionMethod;
Class<? extends play.db.Model> model = getControllerAnnotation(CRUD.For.class).value();
List<String> allowedActions = new ArrayList<String>();
allowedActions.add("show");
allowedActions.add("list");
allowedActions.add("blank");
if (allowedActions.contains(actionMethod)) {
List<SuperClass> list = play.db.jpa.JPQL.instance.find(model.getSimpleName()).fetch();
}
}
}
我不确定做一点事()方法确实很好,并且是 Java 风格/Play! 风格。但这对我有用。
请告诉我是否可以以更原生的方式捕获模型的类。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)