- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下数据库结构:
其中 FESTIVAL_ID 和 LANG 是复合 PK,FESTIVAL_ID 是 FESTIVAL 的 FK。
在我的 Java 代码中,我有以下实体:
@Embeddable
public class FestivalTranslationId {
@Column(name = "FESTIVAL_ID")
Long festivalId;
@Column(name = "LANG")
String lang;
...
}
public class FestivalTranslation {
@EmbeddedId
FestivalTranslationId id = new FestivalTranslationId();
@MapsId(value = "festivalId")
@ManyToOne
@JoinColumn(name = "FESTIVAL_ID", referencedColumnName = "ID")
Festival festival;
@Column(name = "LANG")
String lang;
...
}
@Entity
@Table(name = "FESTIVAL")
public class Festival {
@OneToMany(mappedBy = "festival")
@MapKey(name="lang")
Map<String, FestivalTranslation> translations;
...
}
但是当我尝试获取节日实体时,我遇到了异常(exception):
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'translatio0_.ID' in 'field list'
在 hibernate 日志中我看到疯狂的sql查询:
SELECT translatio0_.FESTIVAL_ID AS FESTIVAL1_14_0_,
translatio0_.FESTIVAL_ID AS FESTIVAL1_15_0_,
translatio0_.LANG AS LANG2_15_0_,
translatio0_.ID AS ID3_15_0_,
translatio0_.FESTIVAL_ID AS FESTIVAL1_15_1_,
translatio0_.LANG AS LANG2_15_1_,
translatio0_.ID AS ID3_15_1_
FROM FESTIVAL_TRANSLATION translatio0_
WHERE translatio0_.FESTIVAL_ID = ?
我的问题是,是否可以将 Map 用于具有 @EmbeddedId 的实体,其中键是复合 PK 的一部分?
最佳答案
如果您想访问lang
属性(property)来自 Festival
实体你不能直接这样做,因为没有 lang
映射于Festival
。你必须这样做:@MapKey(name="id.lang")
因为它是通过FestivalTranslationId
访问的.
描述了一个非常相似的问题 here 。然而,看起来lang
这一事实可能存在一些问题。映射同时存在于映射的键和值中(这取决于您使用的实际 JPA 提供程序 - Hibernate 中存在问题)。
关于java - JPA - @MapKey 和 @EmbeddedId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29181304/
我有一个表,其中包含一个序列和两个外键的复合主键 我能够持久化我的实体类,但它没有按照顺序生成。由一个序列和两个外键组成的复合主键的表,maven中的hbm2java给出了以下实体 这是主要实体 pa
我有一个 hibernate 映射问题。我有以下两个数据库表(我不允许更改数据库): LOCATIONS { ID, -- PK NAME } LOCATION_GROUPS { L
我知道Hibernate中@EmbeddedId注解的复合主键至少由嵌入主键对象的所有对象变量的组合组成。 但是主键对象本身的引用是否也属于复合主键,因此它是由嵌入主键对象的引用值和对象变量构建的?
我对我的表格/实体有疑问。 我的 SQL 表如下所示: 表 1: IdTable1(pk) 属性... 表 2: IdTable2(pk) 属性... 表3: IdTable1(pk) IdTable
这是我的问题 IdComposite 类: @Embeddable public class IdComposite implements Serializable{ @Column(name =
我正在尝试使用引用另一个表的复合主键。我看到了很多主题,但没有答案适用于我的情况。 在我的数据库中,列是由未添加 owner_id 的外键正确创建的。因此,即使员工不存在,我也可以添加新记录。我使用
我收到了一个 Eclipse 错误:@EmbeddedId . 这是实体: @Entity @Table(name = "PERSON") public class Person implements
所以我这里有一个看起来像这样的图表, 可以在此 Answer Here 中找到. +---------------+ +-------------------+ | PRODUCTS
当我尝试从 JPA 存储库获取实体列表时,总是会遇到这样的异常 org.springframework.orm.jpa.JpaSystemException: No default construct
我正在尝试在一个类之间创建一对一的关系,我们将其称为“第一”,另一个类将其称为“第二”。 如果 Second 类使用 @EmbeddedId 作为其主键,它不会允许我这样做,我该如何解决这个问题? 基
我正在使用 hibernate,并且我已经使用 hibernate 在 java 端创建了实体。我的一个数据库表有多个列作为主键,hibernate 使用 @EmbeddedId 来处理这个问题。 我
我有一个主类和一个辅助类,用于存储保存时的错误。错误可以有多种类型,主键是错误的主要类别和类型。这是我的类的映射: 我的初级类(class): @Entity @Table(name = "foo")
我有一个具有复合主键的@Entity。因此,我创建了一个包含 PK 字段的 @EmbeddedId。 问题:是直接通过id.*访问这些字段更好,还是应该在父类中创建getter/setter? 例子:
我有一个包含三个字段 A、B、C 的 @Entity,其中 A 和 B 充当复合主键。我创建了一个包含 A 和 B 的 @EmbeddedId 类。为了减轻定义 getter 和 setter 的负担
在使用 hibernate 和 JPA 的 Spring MVC 应用程序中,我尝试为其基础数据表具有两列主键的实体设置映射。 如何更改下面的代码以使其正常工作? 我创建了一个名为 conceptPK
我有我的实体: @Entity @Table(name="performances") @AssociationOverrides({ @AssociationOverride(name="i
我有点麻烦。我正在使用 JPA Criteria 进行动态选择(使用标准作为 where 子句具有可选变量...)但我的实体之一有一个 EmbeddedId ,其中包含其中的用户列并且需要检查用户 I
我想使用条件进行以下查询。我有一个定义了 EmbeddedId 的 Entity: @Entity @Table(name="TB_INTERFASES") public class Inter
我的 @MapsId 注释和 @EmbeddedId 存在问题。在 Hibernate 中运行代码时,我得到: Caused by: org.hibernate.PropertyAccessExcep
我有以下实体: @Entity(name = "game_users") public class GameUser { private GameUsersPK primaryKey;
我是一名优秀的程序员,十分优秀!