我有PERSON,ACCOUNT,PERSON_ACCOUNT
(对于人和帐户的多对多关系)表和实体。
现在Account
的类型有储蓄,公司,薪水......
此类型是ACCOUNT_TYPE
表中的预定义值。(已创建的表)。
我很好地定义了关系。
Account
类
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())
?
它不应该将数据插入ACCOUNT_TYPE
表。
答案 0 :(得分:2)
您需要在数据库中查询正确的AccountType
,然后在此处指定值。
使用JPA时,Java中的所有对象必须在数据库中具有相应的实体。您无法保存或保留具有JPA映射器无法在数据库中找到的字段的对象。
然后转到您的会话并运行您想要的帐户类型的查询并分配结果。
答案 1 :(得分:0)
您需要编写一个查询来选择要与新帐户关联的AccountType,然后执行
account.setAccountType(objectYouGotFromQuery);
答案 2 :(得分:0)
取决于定义枚举/类AccountType的位置。如果AccountType是枚举,则JPA会自动将枚举转换为DB中的varchar。
public enum AccountType {
SAVING, CORPORATE, SALARY
}
然后你可以使用:
account.setAccountType(AccountType.SAVING);
//save the account to DB