私はReverseMappingToolを使用して、既存のデータベーススキームのJPAソースを作成しています。
1つの例外を除いて、正常に機能します。作成後、get-Methodsを呼び出すと、1対多の関係からデータがロードされません。
JPAファイルは次のようになります。
@Entity
@Table(schema="myScheme", name="ORDER")
@IdClass(org.company.OrderId.class)
public class Order {
@OneToMany(targetEntity=org.company.Orderposition.class, mappedBy="order", cascade=CascadeType.MERGE)
private Set orderpositions = new HashSet();
public Set getOrderpositions() {
return bestellpositions;
}
public void setOrderpositions(Set orderpositions) {
this.orderpositions = orderpositions;
}
public Set getDependantPositions() {
if (getOrderpositions() != null) {
return getOrderpositions();
}
}
と...
@Entity
@Table(schema="myScheme", name="ORDERPOSITION")
@IdClass(org.company.Orderposition.Id.class)
public class Orderposition {
@ManyToOne(fetch=FetchType.LAZY, cascade=CascadeType.MERGE)
@JoinColumn(name="intid_strbestellung", nullable=false)
private Order order;
public Order getOrder() {
return order;
}
public void setOrder(Order order) {
this.order = order;
}
メソッド「getDependantPositions()」は、JPAクラス内に配置したメソッドの単なる例です。それが必要なので、与えられた通りに受け止めましょう。重要なのは、データベースにはこのオブジェクトのエントリが多数含まれているにもかかわらず、getOrderpositions()を呼び出してもデータが返されないということです。マッピングツールは@OneToMany-RelationshipsのFetchTypeを追加していません...そのため、LAZYを呼び出してgetOrderpositions()を呼び出すと、関連するすべての値が返されるはずです。
手伝って頂けますか?
ありがとう!
PS:それは私がthrReverseMappingToolを呼び出す方法です:
Options opts = new Options();
// Output directory - All generated code and metadata will be written to the directory at this path
opts.setProperty("directory", PATH_SOURCEGENERATION);
// True to generate JPA annotations in generated java classes.
opts.setProperty("annotations", true);
// disable orm.xml generation
opts.setProperty("metadata", "none");
// The full class name of a org.apache.openjpa.jdbc.meta.ReverseCustomizer customization plugin
opts.setProperty("customizerClass", JPAPropertiesReverseCustomizer.name);
// Create built-in application identity classes if possible
opts.setProperty("useBuiltinIdentityClass", false);
// Avoid creating classes for many-many join tables
opts.setProperty("primaryKeyOnJoin", true);
// Prevent the creation of inverse 1-many/1-1 relations for every many-1/1-1 relation detected
opts.setProperty("inverseRelations", true);
opts.setProperty("innerIdentityClasses", true);