我正在学习JPA,我有两个实体(Customer和CheckingAccount),其中第一个实体与第二个实体有一对多关系。CheckingAccount是BankAccount类的子类。我正在使用MySQL。
我在测试程序中创建了两个支票账户,并将它们分配给我创建的一个客户。
在我持久化所有内容并检查数据库后,我希望在CheckingAccount表中看到我所做的2行,在Customer表中看到2行,表明该客户有2个支票帐户,但我只看到一行,accounts列的值为“blob”,我希望看到一个帐号。
我不应该在Customer表中看到2行来表示客户有2个支票账户吗?
这是我的客户实体...
package com.gmail.gmjord;
import java.io.Serializable;
import java.lang.String;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.*;
/**
* Entity implementation class for Entity: Customer
*
*/
@Entity
public class Customer implements Serializable {
@Id
@GeneratedValue
private String id;
@Column(nullable = false)
private String name;
@Column(nullable = false)
private List<BankAccount> accounts;
@Column(nullable = false)
private String infoId;
@Column(nullable = false)
private String pin;
private static final long serialVersionUID = 1L;
public Customer() {
super();
accounts = new ArrayList<BankAccount>();
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public int getAccountsLength() {
return this.accounts.size();
}
public boolean isAccountsNull() {
if (accounts == null) {
return true;
} else {
return false;
}
}
public List<BankAccount> getAccounts() {
return accounts;
}
public void setAccounts(List<BankAccount> accounts) {
this.accounts = accounts;
}
public String getInfoId() {
return this.infoId;
}
public void setInfoId(String infoId) {
this.infoId = infoId;
}
public String getPin() {
return this.pin;
}
public void setPin(String pin) {
this.pin = pin;
}
}
这是我的CheckingAccount实体。。。
package com.gmail.gmjord;
import com.gmail.gmjord.BankAccount;
import java.io.Serializable;
import javax.persistence.*;
/**
* Entity implementation class for Entity: CheckingAccount
*
*/
@Entity
public class CheckingAccount extends BankAccount implements Serializable {
private static final long serialVersionUID = 1L;
public CheckingAccount() {
super();
}
}
这是我的银行账户超类CheckingAccount。。。
package com.gmail.gmjord;
import java.io.Serializable;
import java.lang.String;
import javax.persistence.*;
/**
* Entity implementation class for Entity: BankAccount
*
*/
@MappedSuperclass
public abstract class BankAccount implements Serializable {
@Id
@Column(nullable=false)
private String accountNum;
@Column(nullable=false)
private String balance;
@Column(nullable=false)
private String accountType;
private static final long serialVersionUID = 1L;
public BankAccount() {
super();
}
public String getAccountNum() {
return this.accountNum;
}
public void setAccountNum(String accountNum) {
this.accountNum = accountNum;
}
public String getBalance() {
return this.balance;
}
public void setBalance(String balance) {
this.balance = balance;
}
public String getAccountType() {
return this.accountType;
}
public void setAccountType(String accountType) {
this.accountType = accountType;
}
}
当您对2个支票账户和一个客户使用“一对多”时,您的数据库中有以下结构(只是一个任意示例-我使用json格式只是为了更好地解释,但将其属性想象为列):
客户=[{id: 1,姓名:安德森先生}]
CheckingAccount=[{id:1,值:$100,id\u客户:1},{id:2,值:$250,id\u客户:1}]
客户表中不需要有两行。当您有一对多关系时,外键位于多关系边表中。
明白了..有意义吗?
我的问题可能看起来很傻。我是JPA的新手,试图理解它的基本概念。我发现有一种@multi-to-one实体关系可以在那里使用。我的问题是,为什么有人想在拥有“一对多”关系的同时使用它?我的意思是,拥有后一个就足够了解关系并发送查询了,对吗?如果没有,请解释。也许我对这两种关系的看法是完全错误的。请提供一个场景作为示例,以便我更好地理解。谢谢
我希望在消费者和政策这两个实体之间建立一对多关系。一个消费者应该有几个政策。 这是我想要的一个消费JSON对象的例子: 这就是我到目前为止所做的: 政策实体 消费者实体 我想没那么难,但我已经试了几个小时了,还是做不到。我刚到Spring,所以如果有人能帮助我,我会非常感激!
问题内容: 我正在学习Hibernate和JPA,并且一直都在找这个名词。有人可以用一种实用的方式向我解释一下,这个术语是什么,以及它与JPA / Hibernate /数据库的关系? 我想知道这是否是包含任何数据类型的数据结构,但是我不确定是否确实如此。另外,在使用JPA进行的查询中,我不知道它的关系…谁能给我一些启发? 编辑 伙计们,不要沉淀。我已经在Google,字典中(英语),维基百科,社
我有一个实体 定义为 实体 E2 定义为 控制器定义为: (和,是annotated接口,扩展并具有空体)。 当我在调试器中单步执行方法时,我看到在最后两行行之后,和都清除了它们的集合。 基于我在Stack Overflow上发现的其他问题,我尝试将E2定义为 但这于事无补。 原问题(在我尝试测试上面的简化案例之前)我有一个类< code>Robot,定义如下: 和一个类< code>Match类
我在Spring Data JPA中有两个实体: 目标是获取与user\u id相关的所有税款: User.java 税务ayment.jva 我不想要一个太多的注释从User.java和列映射在纳税user_id。 规格等级如下: 根据我获取所有与user\u id相关的税款的目标,规范是正确的还是错误的?
问题内容: 在像mySQL这样的RDBMS数据库中处理多对多关系的最佳方法是什么? 尝试使用数据透视表来跟踪关系,但这会导致以下任一情况: 规范化被抛在后面 空或空的列 您采取了什么方法来支持多对多关系? 问题答案: 在 专门针对该关系 的 表 (有时称为 联结表 )中跟踪多对多关系。该表将该关系建模为指向相反方向的两个一对多关系。 然后,您可以使用联结表通过外键 通过它 联接 其他表 。