[英]Hibernate Java persist a subclass entity from persisted superclass
我有一個代理類和一個擴展代理的用戶類。 我想將持久代理轉換為用戶並使用相同的 id、名稱和名字持久化用戶。 我不知道在代理表中插入另一行。 我怎樣才能做到這一點 ?
這是我的課。
@Entity
@Table(name = "agent")
@Inheritance(strategy = InheritanceType.JOINED)
public class Agent {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
protected Integer id;
@Column(name = "fistname", nullable = false)
protected String fistname;
@Column(name = "name", nullable = false)
protected String name;
}
@Entity
@Table(name="user")
public User extends Agent{
@Column(name = "login", nullable = false, unique = true)
public String login;
@Column(name = "password", nullable = false)
public String password;
我想這樣做
Agent agent=agentService.findOne(1);
User user = new User(agent);
user.setLogin("login");
...
user=userService.saveAndFlush(user);
ok = user.getId() == agent.getId();
總而言之,我想在需要時將代理授予用戶。
您不能將 Agent 轉換為 User,但您可以通過在 User 屬性中設置 Agent 的屬性來從 Agent 構建用戶,除非您在 User 類中添加了來自 Agent ->User 的復制構造函數,在這兩種情況下將創建一個新用戶並添加一個新行。
我一直在努力做到這一點。 它正在工作,但我失去了用戶是專業代理的事實。
@Entity
@Table(name = "agent")
@Inheritance(strategy = InheritanceType.JOINED)
public class Agent {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
protected Integer id;
@Column(name = "fistname", nullable = false)
protected String fistname;
@Column(name = "name", nullable = false)
protected String name;
}
@Entity
@Table(name="user")
public User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
protected Integer id;
@OneToOne
@JoinColumn(name = "id_agent",nullable = false)
protected Agent agent;
@Column(name = "login", nullable = false, unique = true)
private String login;
@Column(name = "password", nullable = false)
private String password;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.