Hi everybody,
I am using openJPA2.0.1 + Mysql5.1.
Table definition like below,
===============DML START=======================
CREATE TABLE t_user (
uid int(10) unsigned NOT NULL AUTO_INCREMENT,
name varchar(255) DEFAULT NULL,
age int(11) NOT NULL,
PRIMARY KEY (uid)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
===============DML END=========================
entity,
==========Entity START=========================
@Entity
@Table(name="t_user")
public class TUser implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(insertable=false)
private int uid;
private int age;
private String name;
......getter and setter.....
==========Entity END===========================
==========persistence.xml START===========================
................
<class>entity.TUser</class>
<properties>
<property name="openjpa.jdbc.DBDictionary" value="mysql"/>
<property name="javax.persistence.jdbc.driver"
value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url"
value="jdbc:mysql://localhost:3306/test?characterEncoding=utf8"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="xxxxxx"/>
<property name="openjpa.Log" value="DefaultLevel=WARN, Runtime=INFO,
Tool=INFO, SQL=TRACE"/>
</properties>
==========persistence.xml END=============================
I run a JPQL like below,
Query query = em.createQuery("SELECT user FROM TUSER user");
For the result, I can get each field's value except primary key field. In
this case, each entity's uid field is zero.
I tried to trace the source code and I found the following code in
org.apache.openjpa.jdbc.kernel.JDBCStoreManager from LINE 1085.
// load unloaded fields
FieldMapping[] fms = mapping.getDefinedFieldMappings();
Object eres, processed;
for (int i = 0; i < fms.length; i++) {
if (fms[i].isPrimaryKey() ||
sm.getLoaded().get(fms[i].getIndex()))
continue;
It seemed that if the a field is primary key so no value would be passed to
it. Would someone tell me why? Did I miss any setting?
Thanks and best regards,
Alex, Huang