gpt4 book ai didi

java - 更改抽象存储库中抽象类的值

转载 作者:行者123 更新时间:2023-12-01 09:14:50 25 4
gpt4 key购买 nike

我有一个像下面这样的 super 类:

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
protected long id = "";

protected String firstname = "";

protected String lastname = "";

protected Address address = null;

// getter setter

如您所见,我使用 TABLE_PER_CLASSInheritanceType,我想保持这样。

现在我有两个继承自Base的子类

@Entity
public class Consulter extends Base {
// other fields
}

@Entity
public class Customer extends Base {
// other fields
}

当我现在创建如下所示的存储库时:

public interface Base_Repository extends JpaRepository<Base, Long> {

}

当我提供具体类型的 id 时,jpa 是否能够从数据库返回正确的对象?那么类似的事情吗?

long id = 222;    

Customer customer = customerRepository.findeOne(id);
Base base = baseRepository.findeOne(id);

boolean equals = customer.equals(((Customer) base));

jpa 也可以做类似的事情吗?

Address address = new Address();
address.setStreet("space street 42");
address.setCountry("Trump Nation");

addressRepository.save(address);

Base base = baseRepository.findeOne(222);
base.setAddress(address);

baseRepository.save(base);

这可行吗?

最佳答案

您无法保存抽象实体,因为抽象实体未映射到数据库表。您需要保存子实体而不是抽象实体。

关于java - 更改抽象存储库中抽象类的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40634715/

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