Java 如果属性是实体类型,如何为其提供值?
我有Java 如果属性是实体类型,如何为其提供值?,java,hibernate,jpa,Java,Hibernate,Jpa,我有个人、账户、个人账户(用于个人和账户的多对多关系)表和实体。 现在,账户有储蓄、公司、工资等类型。。 此类型是科目类型表(已创建表)中的预定义值 我有很好的关系定义。 科目的小代码类 class Account{ private AccountType acctype; } 现在我想创建 Person p = new Person(); p.setFirstName();
个人、账户、个人账户
(用于个人和账户的多对多关系)表和实体。
现在,账户
有储蓄、公司、工资等类型。。
此类型是科目类型
表(已创建表)中的预定义值
我有很好的关系定义。
科目的小代码
类
class Account{
private AccountType acctype;
}
现在我想创建
Person p = new Person();
p.setFirstName();
p.setLastName();
Account account=new Account();
account.setAccountType() ? // how I get predefine value from database to here?
Set accounts; // other code to create set
p.setAccounts(accounts);
我的问题是如何编写account.setAccountType(accountTypeEntity.getAccountType())
?而且它不应该将数据插入
账户类型
表。您需要在数据库中查询正确的账户类型
,然后在此处赋值
使用JPA时,Java中的所有对象都必须在数据库中具有相应的实体。无法保存或持久化具有JPA映射程序无法在数据库中找到的字段的对象
因此,请转到您的会话,对所需的帐户类型运行查询并分配结果。您需要编写查询以选择要与新帐户关联的帐户类型,然后执行以下操作
account.setAccountType(objectYouGotFromQuery);
取决于定义枚举/类AccountType的位置。如果AccountType为enum,JPA会自动将enum转换为DB中的varchar
public enum AccountType {
SAVING, CORPORATE, SALARY
}
然后您可以使用:
account.setAccountType(AccountType.SAVING);
//save the account to DB
sir数据已经存在,如(储蓄、公司、工资)。。但是我是如何给account.setAccountType(上面的一个?)赋值的呢?向我展示您将用于从会话管理器加载帐户类型“saving”的代码。