当前位置: 首页 > 知识库问答 >
问题:

Hibernate多对多映射持久性异常

牧甫
2023-03-14
@Entity
@Table(name = "GOAL")
@NamedQuery(name = "get_goal", 
  query = "SELECT goal FROM Goal goal ")
public class Goal {

/** The strategic_ goal_ key. */
@Column(name = "GOAL_KEY")
private String Goal_Key;

/** The strategic_ goal_ name. */
@Column(name = "GOAL_NM")
private String strategic_Goal_Name;

/** The client initiatives. */
@ManyToMany
@JoinTable(name = "goal_initiative", joinColumns = { @JoinColumn(name = "Goal_Key") }, inverseJoinColumns = { @JoinColumn(name = "initiative_Key") })
List<ClientInitiative> initiative = new ArrayList<ClientInitiative>();  
 /**
 * The Class ClientInitiative.
 */
 @Entity
 @Table(name = "INIITATIVE")
 public class ClientInitiative {

/** The initiative_ key. */
@Column(name = "INITIATIVE_KEY")
private String initiative_Key;

/** The initiative_Key_Name. */
@Column(name = "INITIATIVE_KEY_NM")
private String initiative_Key_Name;

@ManyToMany(mappedBy="clientInitiative")
List<StrategicGoal> strategicGoals = new ArrayList<StrategicGoal>();
   @Repository
   public class GoalDAOImpl extends BaseDaoImpl{

@Override
@NamedQueryTarget("get_goal")
public List<Goal> getGoals(String planUnitKey) {

    List<Goal> goals = null;
    try {
        goals = (List<Goal>) getEntityManager()
                .createNamedQuery("get_goal").getResultList();
        return strategicGoals;
    } catch (NoResultException noResult) {
        return null;
    }
}
" Persistence.PersistenceException"   

persistenceException:DB2 SQL错误:sqlcode=-206,sqlstate=42703,sqlerrmc=t0.id,driver=3.52.95{prepstmnt 1029586270

    SELECT t0.id, t0.GOAL_KEY, t0.GOAL_NM 
    FROM CGSP.GOAL t0 

共有1个答案

庞安晏
2023-03-14

如果您查找错误代码,您将发现以下内容

  1. 指定的列不是语句的任何源或目标表或视图的列。
  2. 在SELECT或DELETE语句中,指定的列不是语句中FROM子句中标识的任何表或视图的列。
  3. SQL数据更改语句的列列表指定了该语句的目标表或视图的列的名称。
  4. 指定了限定列名,但在此上下文中未定义指定为限定符的表指示符。
  5. 在OLAP规范中指定了对列的相关引用。OLAP规范中引用的每个列名必须明确引用包含OLAP规范的子SELECT的结果表中的一列。

在你的情况下,这是第一点。列id不是目标表的列。这就是问题所在。

 类似资料:
  • 1. 前言 本节课,咱们一起继续聊聊多对多关联映射。通过本节课程,你将了解到: 多对多关联映射的实现; 双向多对多关联映射的实现。 2. 多对多关联映射 首先了解表中的多对多关系,学生表中的数据和课程表中的数据就存在多对多关系。 一名学生可以选修多门课程,一门课程可以供多名学生选修。 数据库通过主外键的机制描述表中的数据之间的关系。对于存在多对多关系的数据表,借助于中间表,分拆成两个一对多(或者多

  • 问题内容: 我正在开发一个处理以下两个实体的应用程序: 产品 (将其命名为X,Y,Z)和 材料 (a,b,c,…)。众所周知,每种产品都有一个配方,指示制造该产品所需的材料。例如,要产生一个X,我们需要2 a,6 c和4 d(X = 2a + 6c + 4d)。 这就是它在数据库表中的反映方式: 第三张表中的“计数”字段是同类材料(本例中为2、6、4)的系数。 所以我想以这种方式编写Product

  • 问题内容: 我使用带有注释的Hibernate 3.5.2-FINAL来指定我的持久性映射。我正在努力对应用程序和一组平台之间的关系进行建模。每个应用程序都可用于一组平台。 从我完成的所有阅读和搜索中,我认为我需要让平台枚举类作为Entity持久化,并需要一个联接表来表示多对多关系。我希望该关系在对象级别是单向的,也就是说,我希望能够获得给定应用程序的平台列表,但是我不需要找出给定平台的应用程序列

  • 1. 前言 通过本节课程的学习,你将发现关联对象之间的微妙关系。相信这种关系对你更深入地认识 HIbernate 有很大的帮助。 通过本节课程,你将了解到: 多对多双向关联映射中哪一方是关系维系者; 级联操作与关系维系者。 2. 关系维系者 新学期开始了,同学们选择了各自喜欢的课程,现在为学生添加选修课程的任务就要落在 Hibernate 的身上。一起来看看 Hibernate 是如何完成这个任务

  • 有两张数据表,通过第三张数据表来表示关联关系,我们称之为多对多的映射 如上图,通过一个中间数据表的两个字段,分别指向两个对象的主键,可以实现多对多映射。所以,Pet.foods(一个 List<Food>) 或者 Food.pets(一个List<Pet>)就是多对多映射。 在 POJO 中配置多对多映射 在 POJO 类中字段中增加注解 @ManyMany: @Table("t_food")

  • 下面的映射给出的错误为 从db.karateInvoiceDetail引用db.karateInvoice的外键的列数错误。应为1 想法是有一个表,它的组合键为(id、fiscalyear和companyId),而表的组合键为(seqNo、InvoiceId、InvoiceFiscalYear和InvoiceCompanyId)。