这是父类Enterprise。它有雇主,其中一位是企业总裁。
@Entity
class Enterprise
{
// fields
@OneToMany
public List<Employee> getEmployers()
// implementation
@OneToOne
public Employee getPresident()
// implementation
}
这是子雇员类。它仅提供有关Enterprise的信息。但是问题是我应该使用哪种关联?
@Entity
class Employee
{
// fields
// what association should I use?
public Enterprise getEnterprise()
// implementation
}
假设您已使用定义了Enterprise
-> Employers
关联@OneToMany
,这意味着an
Employer
仅属于一个Enterprise
,则应使用@ManyToOne
,意味着每个都Employer
属于max。1
Enterprise
,但是Enterprise
可以参考很多Employers
。
您可以使用mapped-by
注释中的属性仅在一侧之一中定义关联细节(连接列等):
@Entity
class Enterprise
{
@OneToMany(mapped-by="enterprise")
public List<Employee> getEmployers()
// implementation
@OneToOne
public Employee getPresident()
// implementation
}
@Entity
class Employee
{
@ManyToOne
@JoinTable ( name="Enterprise", joinColumns={ @JoinColumn(name="ENT_ID", referencedColumnName="ENT_ID") }
public Enterprise getEnterprise()
// implementation
}
在情况下Employer
可能是一个不同的总裁Enterprise
,他采用(似乎不太可能,除非你可以是一个企业的总裁,而不被它采用的),并且如果你需要访问Enterprise
它的Employer
是总统从Employer
实体,您可能需要添加另一个关联,理想情况下是这样@OneToOne
(您会遇到问题,因为@OneToOne关系要求两个实体都具有相同的@Id类)。在这种情况下,出于实际原因,我将使用注释该getPresidedEnterprise()
方法。Employer``@ManyToOne
问题内容: 警告 :请在下面查看我自己的答案。此问题是由10.2.0.4之外的类路径中存在的旧Oracle驱动程序引起的。问题解决了。这个问题的其余部分留给后代。 我一直在反对以下观点。这是从我的应用程序代码中提取的一个简单的POJO: 有一个String属性和一个CLOB列。当内容很短时(例如“ hello world”),它会持续存在。对于更长的字符串,我得到以下异常: 我将Hibernate
问题内容: 我有一堂课; 我还有一节课; 我将如何搜索Student ,名字John,lastName Doe? 如果是出生日期属性,我将在日期上创建一个并添加一个相等限制()。我将如何对AppUser对象中的lastName和firstName进行操作? 问题答案: 查询: 要使用条件,请检查此线程 还可以从hibernate文档中查看此页面
问题内容: 通用实体,超类: pojo: 我尝试使用那些注释:@ AttributeOverride,@ Id等,但是它不起作用。你能帮助我吗?我想覆盖属性“ id”以通过pojo / table指定另一个列名和一个序列。最好的方法是什么? 问题答案: 试试这个,代替
问题内容: 这是我在堆栈上的第一个问题,请保持温柔:D 我正在尝试创建休眠的OneToMany关系。当我尝试从数据库中获取一些数据时,出现了StackOverflowError。但是,当我删除OneToMany部分时,一切正常。这是我的REST服务的一部分,目前它可以在VMware vFabric Server和MySQL DB上运行。 获取示例: MySQL脚本: 类: 错误: 编辑: 感谢@T
问题内容: 我需要预先将没有实现接口的枚举映射到现有数据库,该数据库使用将该枚举存储在与所有者类相同的表中。 在这种情况下应如何处理映射?持久化到数据库不会改变,因为实现该接口的所有枚举都将具有不同的值,但是我不确定应如何从数据库中检索对象(我是否需要自定义映射器,它将尝试实例化一个使用指定的enum类进行枚举吗?Hibernate是否本身支持此功能?)。 问题答案: 可以创建一个自定义(例如th
问题内容: Hibernate提供的注释支持使用或两种类型的映射。当我们使用映射时,它使用的“名称” 而不是Enum 的表示形式。在数据库列仅包含一个字符的情况下,这是一个问题。例如,我有以下枚举: 当我坚持枚举使用,即休眠尝试在数据库中存储的值是开放的。但是,我的数据库列仅包含一个字符,因此会引发异常。 克服这个问题的一个办法是改变枚举类型持有单个字符(如,代替,)。但是,这降低了可读性。有什么