Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate-调用模型的getter时发生IllegalArgumentException_Java_Mysql_Hibernate_Inheritance_Hibernate Annotations - Fatal编程技术网

Java Hibernate-调用模型的getter时发生IllegalArgumentException

Java Hibernate-调用模型的getter时发生IllegalArgumentException,java,mysql,hibernate,inheritance,hibernate-annotations,Java,Mysql,Hibernate,Inheritance,Hibernate Annotations,我的hibernate模型出现了这个错误,我不知道出了什么问题 Tag.java: @Entity @Table(name = "tag") public class Tag implements java.io.Serializable { private Integer idTag; private String name; private Set<Question> questions = new HashSet<Question>(0);

我的hibernate模型出现了这个错误,我不知道出了什么问题

Tag.java:

@Entity
@Table(name = "tag")
public class Tag implements java.io.Serializable {
    private Integer idTag;
    private String name;
    private Set<Question> questions = new HashSet<Question>(0);

    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "idtag", unique = true, nullable = false)
    public Integer getIdTag() {
        return this.idTag;
    }

    public void setIdTag(Integer idtag) {
        this.idTag = idtag;
    }

    [...]

    @OneToMany(fetch = FetchType.LAZY, mappedBy = "tag")
    public Set<Question> getQuestions() {
        return this.questions;
    }

    public void setQuestions(Set<Question> questions) {
        this.questions = questions;
    }

}
QuestionText.java:

@Entity
@Table(name = "question_text")
@PrimaryKeyJoinColumn(name="idquestion")
public class QuestionText extends Question implements java.io.Serializable {    
    [...]
}
下面是出现此错误的时间(在
query.list()
)上):


我原以为这可能是与我的
联接继承有关的问题,但我在
表/u每类
中遇到了同样的错误。您看到我在这方面做错了什么吗?

确保您的表的类型与Idtag相同。错误报告是什么:类型与整数不匹配。

这些方法是根据bean命名约定命名的吗?我会说不

尝试setIdTag()和getIdTag()

这样试试

Tag  tag = tagDAO.findTagbyId(1);
q = "FROM QuestionText qt WHERE qt.tag = :tag";
query = (Query) session.createQuery(q);
query.setParameter("tag", tag);
List<QuestionText> data = query.list();
Tag Tag=tagDAO.findTagbyId(1);
q=“FROM QuestionText qt,其中qt.tag=:tag”;
query=(query)session.createQuery(q);
query.setParameter(“tag”,tag);
List data=query.List();

谢谢您的回答,但是
idtag
在两个表中都是
int(11)
。查询中使用的变量
标记
也是一个
整数
?事实上,我可以在本地运行成功的代码。也许DB脚本仍然有问题。我建议删除整个表,让JPA帮助您创建表(例如更新),然后再次测试它。如果能成功运行。然后比较DB脚本和JPA创建的脚本。我的DB脚本已经由Eclipse中的JPA工具从实体生成。你可以得到它。我同意,那更好。但这并不能解决我的问题。我将用正确的命名约定编辑我的问题。你能发布完整的堆栈跟踪吗。有根本原因。哦!我需要给一个对象参数,而不仅仅是ID。非常感谢,它可以工作。你可以改为使用。这避免了仅仅为了使用ID而从数据库中获取标记对象。
q = "FROM QuestionText WHERE tag = :tag";
query = (Query) session.createQuery(q);
query.setParameter("tag", tag);
List<Question> data = query.list();
org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of model.Tag.idtag

    org.hibernate.property.BasicPropertyAccessor$BasicGetter.get(BasicPropertyAccessor.java:187)
    org.hibernate.tuple.entity.AbstractEntityTuplizer.getIdentifier(AbstractEntityTuplizer.java:344)
    org.hibernate.persister.entity.AbstractEntityPersister.getIdentifier(AbstractEntityPersister.java:4537)
    org.hibernate.persister.entity.AbstractEntityPersister.isTransient(AbstractEntityPersister.java:4259)
    org.hibernate.engine.internal.ForeignKeys.isTransient(ForeignKeys.java:209)
    org.hibernate.engine.internal.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:248)
    org.hibernate.type.EntityType.getIdentifier(EntityType.java:510)
    org.hibernate.type.ManyToOneType.nullSafeSet(ManyToOneType.java:174)
    org.hibernate.param.NamedParameterSpecification.bind(NamedParameterSpecification.java:66)
    org.hibernate.loader.hql.QueryLoader.bindParameterValues(QueryLoader.java:612)
    org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1875)
    org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1836)
    org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1816)
    org.hibernate.loader.Loader.doQuery(Loader.java:900)
    org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:342)
    org.hibernate.loader.Loader.doList(Loader.java:2526)
    org.hibernate.loader.Loader.doList(Loader.java:2512)
    org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2342)
    org.hibernate.loader.Loader.list(Loader.java:2337)
    org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:495)
    org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:357)
    org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:195)
    org.hibernate.internal.SessionImpl.list(SessionImpl.java:1269)
    org.hibernate.internal.QueryImpl.list(QueryImpl.java:101)
    my.project.service.QuestionService.findCatItems(QuestionService.java:34)
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "idtag", unique = true, nullable = false)
public Integer getIdtag() {
    return this.idtag;
}

public void setIdtag(Integer idtag) {
    this.idtag = idtag;
}
Tag  tag = tagDAO.findTagbyId(1);
q = "FROM QuestionText qt WHERE qt.tag = :tag";
query = (Query) session.createQuery(q);
query.setParameter("tag", tag);
List<QuestionText> data = query.list();