gpt4 book ai didi

playframework-2.0 - 如何从抽象类正确扩展类

转载 作者:行者123 更新时间:2023-12-04 23:58:08 25 4
gpt4 key购买 nike

你好,我有这样的事情

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Person extends Model {
@Id
public int id;

public String name;

public String lastName;
}


@Entity
public class User extends Person {
public Date registrationDate;

@ManyToMany(mappedBy="holders")
public List<Loan> loans = new ArrayList<Loan>();

public static Finder<Integer, User> find = new Finder<Integer, User>(Integer.class, User.class);
}

首先。该表是根据我的需要创建的,这没问题,但我有两个问题

首先我不能做这样的事情
User user = new User();
user.name = "Dawid";
user.save();

我不能这样做,因为我收到错误,即 dtype 不能为空,但我无法设置它(或者我只是不知道该怎么做)

第二件事是,如果我从 db 添加用户,当我这样做时,我无法通过 id 获取他,我得到 sql 错误,导致 where clausule 看起来像这样
WHERE t0. AND t0.id = 1

如您所见,有 t0。在 dot 之后没有任何东西,这会破坏一切,我不知道它在那里做什么

最佳答案

有关信息,请不要使用 User作为表名,因为它是许多数据库服务器中的关键字:

@Entity
@Table(name = "myUserTable")
public class User extends Person {
...
}

但这不是你的问题。 AFAIK,Ebean 仅支持 SINGLE_TABLE策略,因此您必须使用此策略,并且您可以使用 dtype 在子类上指定鉴别器(即 @DiscriminatorValue)名称。注解:
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public abstract class Person extends Model {
...
}

@Entity
@DiscriminatorValue("aUser")
public class User extends Person {
...
}

关于playframework-2.0 - 如何从抽象类正确扩展类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14203724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com