java.lang.IllegalArgumentException:无法将java.lang.Long字段test.models.Aktion.id设置为test.models.Aktion

时间:2015-01-30 12:32:37

标签: java hibernate

我的java ee应用程序抛出此异常,我无法找出原因:

Caused by: org.hibernate.PropertyAccessException: could not get a field value by reflection getter of test.models.Aktion.id
    at org.hibernate.property.DirectPropertyAccessor$DirectGetter.get(DirectPropertyAccessor.java:60)
    at org.hibernate.tuple.entity.AbstractEntityTuplizer.getIdentifier(AbstractEntityTuplizer.java:346)
    at org.hibernate.persister.entity.AbstractEntityPersister.getIdentifier(AbstractEntityPersister.java:4746)
    at org.hibernate.persister.entity.AbstractEntityPersister.isTransient(AbstractEntityPersister.java:4465)
    at org.hibernate.engine.internal.ForeignKeys.isTransient(ForeignKeys.java:243)
    at org.hibernate.event.internal.AbstractSaveEventListener.getEntityState(AbstractSaveEventListener.java:511)
    at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:116)
    at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:75)
    at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:811)
    at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:784)
    at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:789)
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:1181)
    ... 118 more
Caused by: java.lang.IllegalArgumentException: Can not set java.lang.Long field test.models.Aktion.id to test.models.Aktion
    at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167)
    at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171)
    at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:58)
    at sun.reflect.UnsafeObjectFieldAccessorImpl.get(UnsafeObjectFieldAccessorImpl.java:36)
    at java.lang.reflect.Field.get(Field.java:387)
    at org.hibernate.property.DirectPropertyAccessor$DirectGetter.get(DirectPropertyAccessor.java:57)
    ... 129 more

我无法弄清楚这是什么。

它无法在那里设置场地是什么意思?

我甚至不知道在这里发布什么代码......

感谢您的提示和帮助!

2 个答案:

答案 0 :(得分:0)

所以...你的Aktion代码的部分应该是这样的,

@GeneratedValue
@Id
private Long id;

Konto knoto;

public Aktion() {
    konto = new Konto();
}

public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

我认为你缺少的是Hibernate的正确配置...因为某种方式getId()方法没有返回任何值...这意味着它没有被初始化...这意味着hibernate没有得到通知生成这......或者它不知道如何产生这个。

我的猜测是 - hibernate没有收到通知来生成这个。这意味着您需要阅读有关使用Hibernate的更多信息。

如果没有看到整个代码,我无法帮助解决这个问题......所以请查看这些教程 - http://www.mkyong.com/tutorials/hibernate-tutorials/

问题可能在于此文件 - test.services.AktionService或您完成bean配置的任何位置。

希望这有帮助。

答案 1 :(得分:-1)

Konto konto;

public Aktion() {
   konto = new Konto();
}

好像你拼错了对象' knoto'当你在构造函数Aktion()中初始化它时。