67,513
社区成员
发帖
与我相关
我的任务
分享
java.lang.ArrayIndexOutOfBoundsException: 38
org.apache.openjpa.meta.ClassMetaData.getExtraFieldDataIndex(ClassMetaData.java:859)
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:358)
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:278)
org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:894)
org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:852)
org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:774)
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:982)
org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:278)
org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2400)
org.apache.openjpa.jdbc.meta.strats.RelationFieldStrategy.loadEagerJoin(RelationFieldStrategy.java:541)
org.apache.openjpa.jdbc.meta.FieldMapping.loadEagerJoin(FieldMapping.java:807)
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:1048)
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:1008)
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:378)
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:278)
org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:894)
...
User.java
@Entity
public class User{
...
@OneToMany(fetch=FetchType.LAZY,cascade=CascadeType.ALL,mappedBy="user")
private Set<Orders> orders = new HashSet<Orders>();
@Transient
private Set unpayOrders = new HashSet<Orders>();
@Transient
private Set paiedOrders = new HashSet<Orders>();
...
}
Orders.java
@Entity
public class Orders{
private Boolean hasPaied;// 0:已支付 1:未支付
@ManyToOne(cascade=CascadeType.REFRESH,optional=false,fetch=FetchType.LAZY)
@JoinColumn(name="user")
private User user;
}
//逻辑层:
User user = orm.getUser(xxx);
user.setUnpayOrders(orm.getOrders(user,1 or true));
user.setPaiedOrders(orm.getOrders(user,0 or false));
User.java
public class User{
...
private Set unpayOrders = new HashSet<Orders>();
private Set paiedOrders = new HashSet<Orders>();
...
}
Orders.java
public class Orders{
private String hasPaied;// 0:已支付 1:未支付
private User user;
}
public class BaseInfo implements Serializable{
@Id
@Column(name="id",length=36)
private String username;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "id", unique = true, nullable = false, insertable = false, updatable = false)
private Account account;
}