我知道,@SecondaryTable
问题已经发布了无数次,因此,如果有相同的问题(我还没有找到),请给我链接或建议。
我的数据库(firstTable
和secondTable
)中有两个表,两个POJO
Hibernate类(FirstTablePojo
和SecondTablePojo
)。
+----------+ +-----------+
|firstTable| |secondTable|
|----------+ |-----------+
|featureId |------------>|featureId |(secondTable's primary key)
|foo | |featureName|
|bar | +-----------+
+----------+
我想在单个列表对象的jsp中显示这两个表中的字段,因此我决定使用@SecondaryTable
。这两个表由featureId
字段(这是的主键secondTable
)连接在一起,我希望featureName
from中的from
secondTable
与from中的字段一起显示firstTable
。在FirstTablePojo
由该注释之前:
@SecondaryTable(name="secondTable",
pkJoinColumns=@PrimaryKeyJoinColumn(name="featureId",
referencedColumnName = "featureId"))
我将此属性添加到了FirstTablePojo
(带有getter和setter):
@ManyToOne
@JoinColumn(name="featureId", table="secondTable")
String featureName;
在的帮助下<c:forEach items="${features}" var="feature">
,我得到了${feature.foo}
(foo
是FirstTablePojo
我以前使用过的一个属性@SecondaryTable
)和${feature.featureName}
,我看到了每个foo
,但是都没有featureNames
出现。如果有人能告诉我在这里我想念什么,以及为什么另一个表中的要素名称没有出现在FirstTablePojo
对象列表中,那将是很棒的。
该点@SecondaryTable
注释是单个实体的字段映射到多张表,就好像这些表合并为一个单一的一个。
@ManyToOne用于映射两个实体之间的多对一关联。但是你只有一个。在这种情况下,这没有任何意义。@JoinColumn用于指示将字段映射到构成…连接列的列,即另一个表的外键。因此也没有任何意义。
只需使用以下映射:
@Column(name="featureName", table="secondTable")
String featureName;
Hibernate文档中有一个示例对此进行了很好的解释。
问题内容: 我正在像下面这样在我的DAO类中注入一个: 但是我得到了 根据调试输出,并且在是。 一些文件供参考: : : : 问题答案: 如果要使用Hibernate会话和事务注入功能,则操作映射包需要扩展该包。 有关包装的更多详细信息 该插件提供了一个名为的映射包。它具有三个指示注入功能的拦截器堆栈: :类似于Struts2 (无需验证!),但具有Hibernate会话和事务注入功能。 :类似于
问题内容: 我在使用Spring进行休眠验证时遇到一些问题。我已经按照在线教程中的说明进行了所有操作,但是它不起作用,我只是转到下一页而没有验证错误。 控制器: 客户form.jsp 因此,当我的lastName为空字段时,BindingResult中没有错误。我究竟做错了什么? 问题答案: 如果您的类路径尚不存在,请添加它。如果您正在使用任何构建工具,例如或仅添加到依赖项。 例如: 摇篮: Ma
问题内容: 我已经创建了一个UserType(请参见下文)来处理mySQL数据库中的一种情况,在该情况下我们将空日期保存为0000-00-00 00:00:00。 当我尝试使用dispDT的null持久化我的实体时(请参见下文),它将生成以下异常:“ javax.persistence.PersistenceException:org.hibernate.PropertyValueExceptio
问题内容: Oracle 10g,休眠3.4 此更新(基于值)正确完成: 这个(基于值)抛出异常: 有人知道为什么吗? 问题答案: Hibernate文档说: 批量HQL查询中不能指定隐式或显式连接。子查询可以在where子句中使用,其中子查询本身可能包含联接。 因此,您需要用等效的子查询替换隐式连接:
问题内容: Oracle 10g,hibernate3.4 此更新(基于值)正确完成: 这个(基于值)抛出异常: 有人知道为什么吗? 问题答案: Hibernate文档说: 批量HQL查询中不能指定隐式或显式连接。子查询可以在where子句中使用,其中子查询本身可能包含联接。 因此,您需要用等效的子查询替换隐式连接:
问题内容: 我有一个Spring和Hibernate3在生产中运行良好的应用程序。以下是Spring的applicationContext.xml中会话工厂的配置 生产正常。 现在,对于另一个项目,我们正在迁移到Hibernate4。我们使用org.springframework.orm.hibernate4。*包中的Hibernate 4的SessionFactory,TransacionMan