Hallo,
wenn ich eine Entity Klasse mit .persist speichern möchte, erhalte ich folgende Fehlermeldung. Dabei möchte ich, dass der Primary Key automatisch von Derby generiert wird.
org.apache.jasper.JasperException: java.lang.IllegalArgumentException: Object: Entity.Newentity[id=null] is not a known entity type.
Die Tablle in Derby habe ich so angelegt:
Die Entity Klasse:
Der Aufruf von Persist:
Ich habe schon mehrere Versionen von @GeneratedValue... ausprobiert aber ich verstehe einfach nicht warum ich die Entity Klasse nicht persistieren kann und der Primary Key automatisch generiert wird.
Wenn ich per SQL einen insert in folgender From durchführe, werden die Daten sätze gespeichert und der PK wird auch 'unique auto' generiert.
Ich habe mir das so vorgestellt, dass ich die "ID" gar nicht setzen muss.
Vielleicht ist noch wichtig was ich so verwende:
- Netbeans 6
- Glassfish
- Toplink
- Derby
Wäre nett, wenn mir jemand helfen könnte.
wenn ich eine Entity Klasse mit .persist speichern möchte, erhalte ich folgende Fehlermeldung. Dabei möchte ich, dass der Primary Key automatisch von Derby generiert wird.
org.apache.jasper.JasperException: java.lang.IllegalArgumentException: Object: Entity.Newentity[id=null] is not a known entity type.
Die Tablle in Derby habe ich so angelegt:
Code:
CREATE TABLE NEWENTITY
(ID SMALLINT NOT NULL PRIMARY KEY GENERATED always AS IDENTITY
(START WITH 2, INCREMENT BY 1),
firstname VARCHAR(100));
Die Entity Klasse:
Code:
@Entity
@Table(name = "NEWENTITY")
@NamedQueries({@NamedQuery(name = "Newentity.findById", query = "SELECT n FROM Newentity n WHERE n.id = :id"), @NamedQuery(name = "Newentity.findByFirstname", query = "SELECT n FROM Newentity n WHERE n.firstname = :firstname")})
public class Newentity implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "ID", nullable = false)
private Long id;
@Column(name = "FIRSTNAME")
private String firstname;
public Newentity() {
}
public Newentity(Long id) {
this.id = id;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
}
Der Aufruf von Persist:
Code:
public void createNewEntity() {
Newentity en = new Newentity();
//en.setId(10L);
en.setFirstname("name1");
EntityManager em = getEMF().createEntityManager();
try {
em.getTransaction().begin();
em.merge(en);
//em.flush();
//em.clear();
em.getTransaction().commit();
} finally {
em.close();
}
}
Ich habe schon mehrere Versionen von @GeneratedValue... ausprobiert aber ich verstehe einfach nicht warum ich die Entity Klasse nicht persistieren kann und der Primary Key automatisch generiert wird.
Wenn ich per SQL einen insert in folgender From durchführe, werden die Daten sätze gespeichert und der PK wird auch 'unique auto' generiert.
Code:
INSERT INTO newentity VALUES (DEFAULT,'Michael');
Ich habe mir das so vorgestellt, dass ich die "ID" gar nicht setzen muss.
Vielleicht ist noch wichtig was ich so verwende:
- Netbeans 6
- Glassfish
- Toplink
- Derby
Wäre nett, wenn mir jemand helfen könnte.