4

你好我有这样的东西

@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 不能为 null 但我无法设置它的错误(或者我只是不知道该怎么做)

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

WHERE t0. AND t0.id = 1

如您所见,有 t0。点之后什么都没有,这破坏了一切,我不知道它在那里做什么

4

1 回答 1

7

有关信息,请勿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 {
...
}
于 2013-01-07T20:55:36.513 回答