尝试插入扩展实体时出错:无效的列索引 [英] Error when trying to insert an extended entity: invalid column index

查看:169
本文介绍了尝试插入扩展实体时出错:无效的列索引的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个类的两个实体。首先是第二种扩展类(观察者模式):
孩子:

  @Entity 
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorValue(User)
@Table(name =SCH.USER)
public class User extends Observer implements Serializable {
...字段...
}

和父亲:

  @Entity 
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name =DISCRIMINATOR,discriminatorType = DiscriminatorType.STRING)
@Table(name =SCH.OBSERVER)
公共抽象类Observer实现Serializable {

@Id
@SequenceGenerator(name = OBSERVER_ID_GENERATOR,sequenceName =NEXO.SEQ_OBSERVER,allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator =OBSERVER_ID_GENERATOR)
@Column(name =ID_OBSERVER)
私有长idObserver;

@Column(name =DISCRIMINATOR,nullable = false,length = 20)
private String discriminator;



$ b $ p
$ b

由于我将JPA 2.0升级到JPA 2.1,我无法坚持子实体:
em.persist(userInstance);
生成下一个SQL:

 插入

NEXO.OBSERVER
(DISCRIMINATOR,ID_OBSERVER)

('User',?)

并得到由此产生的错误:

  java.sql.SQLException:无效列索引

我非常肯定这种行为更改是通过升级到JPA 2.1产生的

解决方案

@Chris是对的。当我从Jboss7升级到Wildfly10时,注意到这个错误,并通过更新鉴别器来修复。


@Column(name =INPUT_TYPE,nullable = false ,length = 6,insertable = false,updatable = false)
public String getInputType(){
return inputType;
}



I have two entities for two classes. First is an extended class of the second (Observer pattern): The child:

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorValue("User")
@Table(name="SCH.USER")
public class User extends Observer implements Serializable{
    ...fields...
}

And the father:

@Entity
@Inheritance(strategy = InheritanceType.JOINED) 
@DiscriminatorColumn(name = "DISCRIMINATOR", discriminatorType = DiscriminatorType.STRING)
@Table(name="SCH.OBSERVER")
public abstract class Observer implements Serializable{

    @Id
    @SequenceGenerator(name = "OBSERVER_ID_GENERATOR", sequenceName = "NEXO.SEQ_OBSERVER", allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "OBSERVER_ID_GENERATOR")
    @Column(name="ID_OBSERVER")
    private Long idObserver;

    @Column(name = "DISCRIMINATOR", nullable=false, length=20)
    private String discriminator;
}

Since I upgraded JPA 2.0 to JPA 2.1 I cannot persist the child entity: em.persist(userInstance); Which generates the next SQL:

insert 
into
    NEXO.OBSERVER
    (DISCRIMINATOR, ID_OBSERVER) 
values
    ('User', ?)

And gets the resulting error:

java.sql.SQLException: invalid column index

I am pretty sure this behavior change has been produced by the upgrade to JPA 2.1

解决方案

@Chris is right. When I upgrade from Jboss7 to Wildfly10, noticed this error and fixed by updating discriminator

@Column(name = "INPUT_TYPE", nullable = false, length = 6, insertable = false, updatable = false) public String getInputType() { return inputType; }

这篇关于尝试插入扩展实体时出错:无效的列索引的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆