当前位置: 首页 > 面试题库 >

休眠:@SecondaryTable不起作用

姬和歌
2023-03-14
问题内容

我知道,@SecondaryTable问题已经发布了无数次,因此,如果有相同的问题(我还没有找到),请给我链接或建议。

我的数据库firstTablesecondTable)中有两个表,两个POJO
Hibernate类(FirstTablePojoSecondTablePojo)。

+----------+             +-----------+
|firstTable|             |secondTable|
|----------+             |-----------+
|featureId |------------>|featureId  |(secondTable's primary key)
|foo       |             |featureName|
|bar       |             +-----------+
+----------+

我想在单个列表对象的jsp中显示这两个表中的字段,因此我决定使用@SecondaryTable。这两个表由featureId字段(这是的主键secondTable)连接在一起,我希望featureNamefrom中的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}fooFirstTablePojo我以前使用过的一个属性@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