Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果属性是实体类型,如何为其提供值?_Java_Hibernate_Jpa - Fatal编程技术网

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”的代码。