我对hibernate有一个有趣的问题,模型如下:
@NamedQueries({
@NamedQuery(name = "A.test", query = "SELECT DISTINCT a FROM A a LEFT JOIN FETCH a.pk.b WHERE a.pk.b.pk.c.id = :cId AND a.pk.b.pk.d.id = :dId")
})
@Entity
@Table(name = "AT")
public class A implements Serializable {
@Embedded
我可以在hibernate的@Embeddable类中使用@Embedded吗?
示例:A是不同类中的元素集合。
@Embeddable
class A {
@Embedded
B b;
}
@Embeddable
class B {
@Embedded
C c;
}
@Embeddable
class C {
@Embedded
D D;
}
@Embeddable
class D {
}
这类东西在hibernate中有效吗?第三层嵌套。
当我在@Embeddable中使用JPA @Version注释时,我会看到以下异常指向我的Updateable类:
org.hibernate.AnnotationException: Unable to define @Version on an embedded class
这是我的代码:
@Embeddable
public class Updateable {
@Version
private long modcount;
private String updatedBy;
private DateTime updatedAt;
// ge
我使用Hibernate 3.5.6作为我的JPA2.0实现。我试图在实体中构建一个@ElementCollection (许多字段省略了):
@Entity
public class Buyer implements Serializable {
...
@ElementCollection
private List<ContactDetails> contacts;
...
}
当集合包含基本类型时,我很容易就完成了这个任务,但是我的ContactDetails是一个@Embeddable类:
@Embeddable
public class C
我想使用record作为带有JPA的可嵌入对象。例如,我希望将ID包装在记录中,以使其成为typesafe:
@Entity
public class DemoEntity {
@EmbeddedId
private Id id = new Id(UUID.randomUUID());
@Embeddable
public static record Id(@Basic UUID value) implements Serializable {}
}
但是,如果我尝试使用Hibernate 5.4.32来持久化它,则会得到以下错误:
org.hibernat
我有以下数据库结构
CREATE TABLE a (
id TEXT PRIMARY KEY,
creation_date TIMESTAMP WITH TIME ZONE NOT NULL
);
CREATE TABLE b (
id text
a_id TEXT REFERENCES a,
active BOOLEAN NOT NULL,
creation_date TIMESTAMP WITH TIME ZONE NOT NULL,
modification_date TIMESTAMP WITH TIME ZONE NOT NU
我目前正在做一个项目,涉及Hibernate搜索的使用。目前,该项目使用纯SQL进行搜索,我们希望使用文本搜索(需要知道并正确拼写第一个单词可能会很烦人)。
模式是一个产品可以有多个版本,并且当前版本包含产品的名称。
Public Class Product extends ProgEntity
{
private List<ProductVersion> versions = new ArrayList<ProductVersion>();
...
}
Public Class ProductVersion extends ProgEntity
{
我目前正尝试在我的项目中使用Hibernate Envers,但我得到了以下例外。我认为这是因为MedicalSummaryId没有包含任何数据,并且扩展了映射的超类,但我不知道如何修复它。
我使用的是Hibernate 4.3.8。
例外情况:
Caused by: org.hibernate.MappingException: Type not supported: org.hibernate.type.ComponentType
at org.hibernate.envers.configuration.internal.metadata.IdMetadataGenerator.
我在做Gradle-Kotlin-Hibernate项目。我想保持我的一些课程不变,这在科特林是特别容易。这对于@Entity来说很好
@Entity(name = "SOMETHING")
class MeetingKeychain(
val immutableProp: String
) {
// ID and others
}
感谢kotlin插件的使用。但同样的插件并不适用于@Embeddable。
@Embeddable
class MeetingKeychain(
val immutableProp: String
) {
//
我有一个场景,hibernate中的Embeddable类使用Entity。根据我在SO和其他链接上找到的各种答案,我们可以在一个@ManyToOne, @OneToMany类中编写Embeddable。
但是这样做给了我HibernateMappingExeption
考虑以下示例:我有两个实体和一个可嵌入的类,如下所示:
实体A
@Entity
@Table(name = "A")
public class A {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int
MappedSuperclass使用继承来实现字段和代码重用。
此外,我们通过Hibernate提供的可嵌入功能来利用一些组合
@Embeddable
public class Department {
private long deptId;
private String name;
private String description;
}
@Entity
@Table(name="CSE_DEPT", schema="test")
public class CSEDepartment{
@Embedded
private Department dep
我有两个嵌套复合主键的类( B的复合主键包含A的复合主键)
class A {
@EmbeddedId
APk aId;
}
@Embeddable
class APk {
@Column
Long x;
@Column
Long y;
}
class B {
@EmbeddedId
BPk bId;
}
不推荐使用hibernate中的组合主键:为B实现主键类型的推荐方法是什么
备选方案1-嵌入A的PK?
备选方案2-还是在更扁平化的实现中声明所有3个属性?
@Embeddable
class BPk {
// Al
两个表,如:
CREATE TABLE foo (
id INT PRIMARY KEY,
x TEXT
);
CREATE TABLE bar (
foo_id INT REFERENCES foo (id) ON DELETE CASCADE,
y TEXT,
z TEXT
);
...can的映射方式如下:
@Table(name = "foo")
@SecondaryTable(name = "bar", pkJoinColumns = @PrimaryKeyJoinColumn(name = "foo_id", r
我使用的是JPA和Hibernate,它有一个@Entity,它包含一个@Embeddable组件的@ElementCollection,该组件本身有两个@Embeddable组件,其类型相同,与另一个@Entity具有@OneToOne关联。
基本上:
@Entity
public class Company {
// ...
@ElementCollection
private List<Employee> employees;
// ...
}
@Embeddable
public class Employee {
// ...