我希望在消费者和政策这两个实体之间建立一对多关系。一个消费者应该有几个政策。
这是我想要的一个消费JSON对象的例子:
{
id : 1,
name : "Peter",
endpoint: "123.456.778",
policies: [
{
id : 1,
name: "policy 01"
},
{
id : 2,
name: "policy 02"
}
]
}
这就是我到目前为止所做的:
政策实体
@Entity
public class Policy {
@Id
@GeneratedValue
@Column(name = "id")
private Integer id;
@Column(name = "name")
private String name;
//getters and setters
}
消费者实体
@Entity
public class Consumer {
@Id
@GeneratedValue
@Column(name = "consumer_id")
private Integer id;
@Column(name = "name")
private String name;
@Column(name = "endpoint")
private String endpoint;
@OneToMany
@JoinColumn(??)
private List<Policy> policies;
//getters and setters
}
我想没那么难,但我已经试了几个小时了,还是做不到。我刚到Spring,所以如果有人能帮助我,我会非常感激!
试试这个代码:)
你的消费者阶层
@Entity
public class Consumer {
@Id
@GeneratedValue
@Column(name = "consumer_id")
private Integer id;
@Column(name = "name")
private String name;
@Column(name = "endpoint")
private String endpoint;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "idPolicy")
private List<Policy> policies;
public Consumer() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEndpoint() {
return endpoint;
}
public void setEndpoint(String endpoint) {
this.endpoint = endpoint;
}
public List<Policy> getPolicies() {
return policies;
}
public void setPolicies(List<Policy> policies) {
this.policies = policies;
}
}
请注意,在映射的by中,您应该使用引用数据库中策略的列的名称,因此,如果它不是策略ID,请使用您为其指定的名称
您的政策类
@Entity
public class Policy {
@Id
@GeneratedValue
@Column(name = "id")
private Integer id;
@Column(name = "name")
private String name;
@ManyToOne(optional = false)
private Consumer consumer;
public Policy() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@Entity
public class Consumer {
@OneToMany(mappedBy = "consumer")
private List<Policy> policies;
}
@Entity
public class Policy {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn("consumer_id")
private Consumer consumer;
}
fetch=FetchType.LAZY
不是必需的,但可取。
我在这里提供了一些基础知识
@JoinColumn是什么,在Hibernate中是如何使用的
如果你想一个策略
没有一个消费者
:
您可以使用联接表
@Entity
public class Consumer {
@OneToMany
private List<Policy> policies;
}
@Entity
public class Policy {
}
单向关系(策略
表将具有consumer_id
列,但是策略
类没有消费者
)
@Entity
public class Consumer {
@OneToMany
@JoinColumn("consumer_id")
private List<Policy> policies;
}
@Entity
public class Policy {
}
此外,请记住,如果您想使用策略
作为表格数据(来自字典),您将需要@ManyTo很多
。
我在Spring Data JPA中有两个实体: 目标是获取与user\u id相关的所有税款: User.java 税务ayment.jva 我不想要一个太多的注释从User.java和列映射在纳税user_id。 规格等级如下: 根据我获取所有与user\u id相关的税款的目标,规范是正确的还是错误的?
问题内容: 我想在两个实体(消费者和政策)之间建立一对多关系。一个消费者应该有几项政策。 这是我希望拥有的Consumer JSON对象的示例: 这是我到目前为止所拥有的: 政策实体 消费者实体 我认为这并不难,但是我现在尝试了几个小时而无法完成。我是Spring的新手,所以如果有人能够帮助我,我将非常感激! 问题答案: @Entity public class Consumer { 不是必需的,
母实体 子实体 代码持久化 请告诉我这些步骤是否正确。我有以下例外。并且无法理解为什么父id在子表中不可用 原因:org.hibernate.exception.ConstraintViolation异常:无法将值NULL插入到列PARAM_REF_ID,表PARAM中;列不允许空值。INSERT失败。
在我的项目中,我使用Spring数据jpa。我有多对多关系的表格。我的实体: 和零件: 现在在Controller中,我尝试从表部分中删除一行: 但我有例外: 区分完整性约束冲突:“FK9Y4MKICYBLJWPENACP4298I49:PUBLIC.PARTS外键(ID\u导出)引用PUBLIC.EXPORT(ID)(1)”;SQL语句:/*删除com.aleksandr0412.demo.en
我还尝试了一些非本地查询, 但这也显示了“JOIN预期的路径![SELECT u.username,p.pname FROM com.central.model.users u INNER JOIN Privillages p ON u.privid=p.pid]”
配置和配置头之间有一对多关系。以下是配置映射程序: 以下是ConfigHeadersMapper: 当我试图保存一个新实体时(配置的ID等于null) 保存配置和ConfigHeaders,但ConfigHeaders处的配置id(FK)为空。 所以我尝试了以下代码: 并使用自动生成的父ID(config_ID)保存子项(ConfigHeaders)。 你能告诉我Map结构有什么问题吗?我对这个工