我正在使用ReverseMappingTool爲現有數據庫方案創建JPA來源。JPA - 具有一對多關係的實體不返回任何數據
它工作正常,但有一個例外:在創建之後,從一對多關係調用get-Methods數據時不會加載。
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()應該返回所有相關的值。
你能幫我嗎?
謝謝!
P.S:那是我叫蘇氨酸ReverseMappingTool方式:
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);
你的代碼不能編譯。請修復這些問題,以便我們可以專注於實際的代碼。此外,如果toManyAssociation爲null,則測試將始終返回false。如果沒有關聯的實體,該集合將爲空,並且不爲null。請向我們展示無法按預期工作的代碼以及表格中的相關數據。最後,爲什麼不使用泛型? –
嗨JB Nizet ...我把代碼稍微改了一些,在這裏張貼它。把德文名稱改爲英文等等。文件編譯得很好。 getDependantPositions()方法也是一個例子...它通常調用OnetoMany屬性的Get-Method ...我將添加泛型..感謝那些信息... – Randbedingung