我有两个实体Car
,它CarDescription
在哪里CarDescription
取决于表中的另一个外键Language
。
我要完成的工作是拥有一个HashMap
in,Car
这样每当我有一个Car
实体对象时,我都可以从语言ID访问所有描述。
实体 Car.java
@Entity
@Table(name = "Car")
public class Car extends AbstractTimestampEntity implements Serializable {
private static final long serialVersionUID = -5041816842632017838L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "ID", unique = true, nullable = false)
private Long id;
@OneToMany(mappedBy="car")
@MapKeyColumn(name = "language_ID")
// @MapKey(name = "language") // does not work either
private Map<Long, CarDescription> carDescription = new HashMap<>(0);
}
实体 CarDescription.java
@Entity
@Table( name="car_description",
uniqueConstraints = {
@UniqueConstraint(columnNames={"language_id", "name"})
}
)
public class CarDescription extends AbstractTimestampEntity implements Serializable {
private static final long serialVersionUID = 2840651722666001938L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "ID", unique = true, nullable = false)
private Long id;
@NotNull
@ManyToOne
private Car car;
@NotNull
@OneToOne
private Language language;
// ..
}
实体 语言.java
@Entity
public class Language implements Serializable {
private static final long serialVersionUID = 3968717758435500381L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="ID")
private Long id;
// ..
}
我遇到的问题是映射为我提供了从CarDescription.id
到的映射CarDescription
。
如何完成正确的映射?
在CarDescription
您需要添加languageId
属性:
@Column(name = "language_id", insertable = false, updatable = false)
private Long languageId;
@NotNull
@OneToOne
@JoinColumn(name = "language_id")
private Language language;
public void setLanguage(Language language) {
this.languageId = language.getId();
this.language = language;
}
然后,您可以Car
像这样在实体中使用它:
@OneToMany(mappedBy="car")
@MapKey(name = "languageId")
private Map<Long, CarDescription> carDescription = new HashMap<>(0);
我有两个persistenceUnits映射到两个不同的Oracle模式,这些模式是相似的,但表名不同。当我尝试部署应用程序时,我得到一个Hibernate异常“Missing table”,这似乎是Hibernate在错误的PersistenceUnit中查找表。 .ear#POIPersistenceUnit\“:org.hibernate.hibernateException:丢失表:POI
我可能需要一些帮助,因为我被这些文件弄糊涂了: 我有一个JPA母公司: 和孩子: 如果我只是增加联系人,我希望JPA能够建立这种关系。 e、 g: 现在发生的是: 触点插入DB(良好) 使用providerX。联系人中的id。提供者列(良好) provider\u contact表中未显示任何关系条目 我知道我可以将联系人设置为提供者的属性<代码>providerX。联系人。添加(c)。。。回购。
我有一个相当大的系统,它的规范是由子实体上的几个方法构建的。所以我有一个用户,他有一个宠物木偶,就像这个问题一样。我的关系是双向的,所以Pet在用户上也有多对一的关系,我正在努力将子实体上的规范转换为应用于父实体。 我查找的大多数问题都显示了如何在不同的实体上应用规范,或者在规范执行后获得不同的实体。这不是我想要的。 我试着写一个这样的方法: 但我不知道如何编写它(我尝试过使用Join,但没能“告
我有两个表审查和bedrijfsgegevens。Review表有一个主键(reviewId)和一个外键(bedrijfId)。BedrijfId是Bedrijfsgegevens表中的主键(作为Id)。我遇到了这个问题,因为我试图在Review表中添加一个bedrijfId,而Bedrijfgegevens表中不存在这个行,因此得到了一个异常。 我尝试使用@manytoone和@joincolu
关联实体和关联关系属性有什么区别?在我的一本名为《现代数据库管理》(Hoffer,第11版)的书中,作者陈述了两者之间的区别。然而,它并没有真正解释为什么会有差别,相反,它只是给出了它们是如何不同的例子。 据我所知,一个有一个属性关联的关系是一个关联关系属性,并用一条虚线表示一个圆角矩形,该矩形内有该属性。而关联实体是描述关系的多个属性。两者都只能用于ER图解中的多对多关系。我的思维过程正确吗?
我是Spring BootJPA的新手,正在努力找出多个实体之间的关系。 我有一个用户实体、一个产品实体和一个评论实体。一个用户有很多评论。一个产品有很多评论。评论有一个产品和一个用户。 目前,我正在为用户使用一对多的关系 我的问题: 如何在不删除产品实体和用户实体的情况下删除审阅实体? 我应该使用哪种级联类型? 用户实体: 产品实体: 审查实体: 用户控制器: 用户服务: 简单运行: 我认为我不