我有一个代理类和一个扩展代理的用户类。 我想将持久代理强制转换为用户,并使用相同的 ID、名称和名字来持久保留该用户。我不知道如何将另一行插入代理表中。我怎样才能做到这一点?
这是我的类(class)。
@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();
总而言之,我想在需要时向用户授予代理。
最佳答案
您无法将代理强制转换为用户,但可以通过在 User 属性中设置代理的属性来从代理构建用户,除非您在 User 类中从 Agent ->User 添加了复制构造函数,在这两种情况下,都会创建一个新用户并添加一个新行。
关于java - Hibernate Java 持久化来自持久化父类(super class)的子类实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47016009/