Hibernate - คอลเล็กชันที่มี cascade =” all-delete-orphan” ไม่ได้ถูกอ้างอิงโดยอินสแตนซ์เอนทิตีของการเป็นเจ้าของอีกต่อไป


225

ฉันประสบปัญหาดังต่อไปนี้เมื่อพยายามอัปเดตเอนทิตีของฉัน:

"A collection with cascade=”all-delete-orphan” was no longer referenced by the owning entity instance".

ฉันมีเอนทิตีหลักและมีSet<...>เอนทิตีลูกบางอย่าง เมื่อฉันพยายามอัปเดตฉันจะได้รับการอ้างอิงทั้งหมดเพื่อตั้งค่าเป็นคอลเล็กชันนี้และตั้งค่า

รหัสต่อไปนี้แสดงถึงการทำแผนที่ของฉัน:

@OneToMany(mappedBy = "parentEntity", fetch = FetchType.EAGER)
@Cascade({ CascadeType.ALL, CascadeType.DELETE_ORPHAN })
public Set<ChildEntity> getChildren() {
    return this.children;
}

ฉันพยายามทำความสะอาด Set <.. > เท่านั้นตามนี้: วิธี "เป็นไปได้" ในการแก้ปัญหาแต่มันไม่ทำงาน

หากคุณมีความคิดใด ๆ โปรดแจ้งให้เราทราบ

ขอบคุณ!


1
@ mel3kings ลิงก์ที่คุณระบุไม่สามารถใช้งานได้อีกต่อไป
โอปอล


ลองใช้คอลเลกชันที่ไม่แน่นอนเมื่อนำองค์ประกอบออก ยกตัวอย่างเช่นไม่ได้ใช้something.manyother.remove(other)ถ้าเป็นmanyother List<T>ทำให้คนอื่นกลายเป็นคนที่ไม่ชอบ, ชอบArrayList<T>และใช้orphanDelete = true
นูเร

คำตอบ:


220

ตรวจสอบสถานที่ทั้งหมดที่คุณมอบหมายงานให้กับ sonEntities ลิงค์ที่คุณอ้างอิงชี้ให้เห็นอย่างชัดเจนว่าสร้าง HashSet ใหม่ แต่คุณสามารถมีข้อผิดพลาดนี้ได้ทุกเมื่อที่คุณมอบหมายชุดใหม่ ตัวอย่างเช่น:

public void setChildren(Set<SonEntity> aSet)
{
    this.sonEntities = aSet; //This will override the set that Hibernate is tracking.
}

โดยปกติคุณต้องการเพียง "ใหม่" ชุดหนึ่งครั้งในตัวสร้าง เมื่อใดก็ตามที่คุณต้องการเพิ่มหรือลบบางสิ่งในรายการคุณต้องแก้ไขเนื้อหาของรายการแทนที่จะกำหนดรายการใหม่

ในการเพิ่มเด็ก:

public void addChild(SonEntity aSon)
{
    this.sonEntities.add(aSon);
}

ในการลบเด็กออก:

public void removeChild(SonEntity aSon)
{
    this.sonEntities.remove(aSon);
}

8
ที่จริงปัญหาของฉันเกี่ยวกับเท่ากับและ hashcode ของหน่วยงานของฉัน รหัสดั้งเดิมอาจทำให้เกิดปัญหามากมายอย่าลืมตรวจสอบ สิ่งที่ฉันทำคือเพียงแค่ใช้กลยุทธ์การลบเด็กกำพร้าและแก้ไขเท่ากับและแฮชโค้ด
axcdnt

6
ฉันดีใจที่คุณแก้ไขปัญหาของคุณ เท่ากับและ hashcode กัดฉันสองสามครั้งด้วย Hibernate แทนที่จะอัปเดตชื่อคำถามด้วย "[แก้ไข]" คุณควรดำเนินการต่อและโพสต์คำตอบแล้วทำเครื่องหมายเป็นคำตอบที่ยอมรับ
brainimus

ขอบคุณฉันวิ่งเข้าไปในบางสิ่งบางอย่างที่คล้ายกันและเปิดออกหมาของฉันสำหรับที่ตั้งเป็นที่ว่างเปล่า ..
พระพุทธเจ้า

ใช่แม้ในรายการที่ว่างเปล่าคุณจะได้รับข้อผิดพลาดนี้ ฉันจะไม่คาดหวังว่าเพราะไม่มีเด็กกำพร้า (รายการว่างเปล่า)
tibi

4
โดยปกติคุณต้องการเพียง "ใหม่" ชุดหนึ่งครั้งในตัวสร้าง เมื่อใดก็ตามที่คุณต้องการเพิ่มหรือลบบางสิ่งในรายการคุณต้องแก้ไขเนื้อหาของรายการแทนการกำหนดรายการใหม่ เปรตที่สุด
Nikhil Sahu

109

วิธีการ:

public void setChildren(Set<SonEntity> aSet) {
    this.sonEntities = aSet;
}

ใช้งานได้ถ้าตัวparentEntityถูกถอดออกและอีกครั้งถ้าเราอัปเดต
แต่ถ้าเอนทิตีไม่แยกออกจากต่อบริบท (เช่นการดำเนินการค้นหาและอัปเดตอยู่ในธุรกรรมเดียวกัน) วิธีการทำงานด้านล่าง

public void setChildren(Set<SonEntity> aSet) {
    //this.sonEntities = aSet; //This will override the set that Hibernate is tracking.
    this.sonEntities.clear();
    if (aSet != null) {
        this.sonEntities.addAll(aSet);
    }
}

1
@Skuld ฉันมีปัญหาที่คล้ายกันและฉันใช้วิธีการแก้ปัญหาของคุณ (ในวิธีการตั้งค่าฉันล้างคอลเลกชันเด็ก - this.children.clear () - และฉันได้เพิ่มเด็กใหม่ - this.children.addAll (เด็ก)) การเปลี่ยนแปลงนี้ไม่สามารถแก้ไขปัญหาของฉันได้ ฉันยังคงได้รับข้อยกเว้น "คอลเล็กชันที่มี cascade =" all-delete-orphan "ไม่ได้ถูกอ้างถึงอีกต่อไปโดยอินสแตนซ์เอนทิตี้ของการเป็นเจ้าของ" คุณมีความคิดว่าทำไม ขอบคุณมาก!
ovdsrn

@ovdsrn ขออภัยนี่ไม่ใช่คำตอบของฉันฉันเพิ่งแยกการจัดรูปแบบของคำตอบผู้แต่งดั้งเดิม (kmmanu) อาจช่วยคุณได้ (หรือ alt คุณอาจต้องการเริ่มต้นคำถามใหม่หากสถานการณ์ของคุณแตกต่างจาก คำถามเดิมถามที่นี่) ขอให้โชคดี
Skuld

1
วิธีนี้ใช้งานได้ดี แต่ไม่ดีนักเมื่อเด็ก ๆ อยู่ในส่วนประกอบ hibernate ที่ซ้อนกันและส่วนประกอบนั้นถูกทำให้เป็นโมฆะใน Entity จากนั้นคุณจะได้รับข้อผิดพลาดเดียวกัน นี่เป็นเพราะเจ้าของลูกคือเอนทิตีรูทและไม่ใช่องค์ประกอบที่ทำให้เป็นโมฆะ ... เช่นนี้องค์ประกอบไม่เคยได้รับอนุญาตให้เป็นโมฆะ แต่ควรส่งผลให้วิธีการทำลาย () ข้างหน้า เด็ก ... อย่างน้อยฉันก็ไม่รู้จักวิธีแก้ปัญหาที่ดีกว่า ... มันเป็นคอลเลกชันที่ชัดเจน () การก่อสร้าง แต่หลังจากนั้นก็ผ่านการทำลาย () ...
edbras

ดูโพสต์นี้สำหรับรายละเอียดเพิ่มเติมด้านบน: stackoverflow.com/questions/4770262/…
edbras

7
ใช้ this.sonEntities.retainAll (aSet) มากกว่า sonEntities.clear () เพราะถ้า aSet == this.sonEntities (เช่นวัตถุเดียวกัน) คุณจะเคลียร์ชุดก่อนที่คุณจะเพิ่มเข้าไป!
Martin

33

เมื่อฉันอ่านในสถานที่ต่าง ๆ ที่จำศีลไม่ชอบให้คุณกำหนดให้กับคอลเลกชันฉันคิดว่าสิ่งที่ปลอดภัยที่สุดที่จะทำแน่นอนจะทำให้มันเป็นเช่นนี้:

class User {
  private final Set<Role> roles = new HashSet<>();

public void setRoles(Set<Role> roles) {
  this.roles.retainAll(roles);
  this.roles.addAll(roles);
}
}

อย่างไรก็ตามสิ่งนี้ไม่ได้ผลและคุณจะได้รับข้อผิดพลาด "ไม่อ้างอิงอีกต่อไป" ซึ่งจริงๆแล้วอาจทำให้เข้าใจผิดในกรณีนี้

ปรากฎว่าการไฮเบอร์เนตเรียกเมธอด setRoles ของคุณและต้องการให้มีคลาสคอลเลกชันพิเศษติดตั้งที่นี่และจะไม่ยอมรับคลาสคอลเลกชันของคุณ นี่ทำให้ฉันนิ่งงันเป็นเวลานานแม้จะอ่านคำเตือนทั้งหมดเกี่ยวกับการไม่กำหนดให้คอลเลกชันของคุณในวิธีการตั้งค่าของคุณ

ดังนั้นฉันเปลี่ยนเป็น:

public class User {
  private Set<Role> roles = null;

  public void setRoles(Set<Role> roles) {
  if (this.roles == null) {
    this.roles = roles;
  } else {
    this.roles.retainAll(roles);
   this.roles.addAll(roles);
  }
}
}

ดังนั้นในการโทรครั้งแรกไฮเบอร์เนตจะติดตั้งคลาสพิเศษและในการโทรครั้งต่อไปคุณสามารถใช้วิธีการของตัวเองโดยไม่ทำให้ทุกอย่างเสียหาย หากคุณต้องการใช้คลาสของคุณเป็นถั่วคุณอาจต้องใช้ setter ที่ใช้งานได้และอย่างน้อยก็น่าจะใช้ได้


2
เหตุใดคุณจึงโทรหา keepAll () ทำไมไม่ล้าง () ตามด้วย addAll ()
edbras

1
"ทำไมคุณถึงเรียก keepAll () ทำไมไม่เคลียร์ () ตามด้วย addAll ()?" เป็นคำถามที่ดีฉันคิดว่าฉันทำงานภายใต้สมมติฐานที่ว่าจำศีลจะมีโอกาสน้อยที่จะเห็นว่านี่เป็นการอัปเดตฐานข้อมูลหากคุณไม่ได้ลบรายการก่อนที่จะเพิ่มอีกครั้ง แต่ฉันคิดว่ามันใช้งานไม่ได้
xpusostomos

2
คุณควรใช้ maintainAll () over clear () มิฉะนั้นคุณอาจลบล้างบทบาทหากคุณผ่านไปในวัตถุชุดเดียวกัน ตัวอย่างเช่น: user.setRoles (user.getRoles ()) == user.roles.clear ()
Martin

2
เมื่อคุณตั้งค่า orphanRemoval = true และคุณสร้างระเบียนที่คอลเลกชันนี้เป็นโมฆะคุณจะได้รับข้อผิดพลาดนี้ด้วย ดังนั้น: a มี oneToMany b พร้อม orphanremoval = true เมื่อคุณสร้าง A โดยที่ B = null ปัญหานี้คือ triggerd วิธีการแก้ปัญหาของคุณเพื่อเริ่มต้นและทำให้สุดท้ายดูเหมือนว่าดีที่สุด
ลอเรนซ์

ขอบคุณ! ฉันถูก initialising List<String> list = new ArrayList<>();รายการของฉันเป็น เปลี่ยนไปList<String> list = null;แก้ไขปัญหา :)
หัวรุนแรง

19

ที่จริงปัญหาของฉันเกี่ยวกับเท่ากับและ hashcode ของหน่วยงานของฉัน รหัสดั้งเดิมอาจทำให้เกิดปัญหามากมายอย่าลืมตรวจสอบ สิ่งที่ฉันทำคือเพียงแค่ใช้กลยุทธ์การลบเด็กกำพร้าและเท่ากับที่ถูกต้องและแฮชโค้ด


9
โปรดเป็นตัวอย่างของวิธีการที่เท่าเทียมกันและวิธีการ hashCode? เพราะฉันมีปัญหามากมาย: หรือฉันไม่สามารถอัปเดตชุดของฉันหรือฉันได้รับข้อผิดพลาด StackOverflow ผมเปิดคำถามที่นี่: stackoverflow.com/questions/24737145/... ขอบคุณ
SaganTheBest

11

ฉันมีข้อผิดพลาดเดียวกัน ปัญหาสำหรับฉันคือหลังจากบันทึกเอนทิตีแล้วคอลเล็กชันที่แม็พยังคงเป็นโมฆะและเมื่อพยายามอัพเดตเอนทิตี สิ่งที่ช่วยฉันได้: การบันทึกเอนทิตีจากนั้นทำการรีเฟรช (คอลเลกชันไม่เป็นโมฆะ) จากนั้นทำการอัปเดต อาจเริ่มต้นการรวบรวมด้วย ArrayList ใหม่ () หรือบางสิ่งอาจช่วยได้เช่นกัน


การส่ง ArrayList ใหม่แทน null ทำให้ฉันทำงานได้ดี ขอบคุณ
rpajaziti

4

ประเภทความสัมพันธ์:


อย่าพยายามยกตัวอย่างคอลเลกชันเมื่อมีการประกาศhasManyเพียงเพิ่มและลบวัตถุ

class Parent {
    static hasMany = [childs:Child]
}

ใช้ประเภทความสัมพันธ์:


แต่คอลเลกชันอาจเป็นโมฆะก็ต่อเมื่อมีการประกาศเป็นคุณสมบัติ (ใช้ความสัมพันธ์) และไม่ได้เริ่มต้นในการประกาศ

class Parent {
    List<Child> childs = []
}

4

ฉันใช้ @ user2709454 วิธีการที่มีการปรับปรุงเล็กน้อย

public class User {
    private Set<Role> roles;

    public void setRoles(Set<Role> roles) {
        if (this.roles == null) {
            this.roles = roles;
        } else if(this.roles != roles) { // not the same instance, in other case we can get ConcurrentModificationException from hibernate AbstractPersistentCollection
            this.roles.clear();
            if(roles != null){
                this.roles.addAll(roles);
            }
        }
    }
}

3

TreeSetฉันมีปัญหานี้เมื่อพยายามที่จะใช้ ฉันเริ่มต้นoneToManyกับTreeSetสิ่งที่ใช้งานได้

@OneToMany(mappedBy = "question", fetch = FetchType.EAGER, cascade = { CascadeType.ALL }, orphanRemoval=true)
@OrderBy("id")
private Set<WizardAnswer> answers = new TreeSet<WizardAnswer>();

แต่สิ่งนี้จะนำข้อผิดพลาดที่อธิบายไว้questionข้างต้น ดังนั้นดูเหมือนว่าhibernateได้รับการสนับสนุนSortedSetและหากมีเพียงแค่เปลี่ยนสายด้านบนเป็น

@OneToMany(mappedBy = "question", fetch = FetchType.EAGER, cascade = { CascadeType.ALL }, orphanRemoval=true)
@OrderBy("id")
private SortedSet<WizardAnswer> answers;

มันใช้งานได้เหมือนเวทมนตร์ :) ข้อมูลเพิ่มเติมhibernate SortedSetได้ที่นี่


บางทีอาจจะดีกว่าที่จะใช้ Collections.emptySet () เพื่อใช้เดี่ยวว่างรายการ
ryzhman

3

ครั้งเดียวที่ฉันได้รับข้อผิดพลาดนี้คือเมื่อฉันพยายามส่ง NULL ไปที่ setter สำหรับการรวบรวม เพื่อป้องกันสิ่งนี้ setters ของฉันมีลักษณะเช่นนี้:

public void setSubmittedForms(Set<SubmittedFormEntity> submittedForms) {
    if(submittedForms == null) {
        this.submittedForms.clear();
    }
    else {
        this.submittedForms = submittedForms;
    }
}

3

ฉันพบปัญหานี้เมื่ออัปเดตเอนทิตีด้วยคำขอโพสต์ JSON ข้อผิดพลาดเกิดขึ้นเมื่อฉันอัพเดตเอนทิตีโดยไม่มีข้อมูลเกี่ยวกับลูก ๆ แม้ว่าจะไม่มีก็ตาม เพิ่ม

"children": [],

หน่วยงานที่ขอแก้ไขปัญหา


1

อีกสาเหตุหนึ่งอาจใช้ลอมบอก

@Builder- ทำให้ประหยัดCollections.emptyList()แม้ว่าคุณจะพูด.myCollection(new ArrayList());

@Singular- ละเว้นค่าเริ่มต้นของระดับคลาสและออกจากฟิลด์nullแม้ว่าจะมีการประกาศฟิลด์คลาสเป็นmyCollection = new ArrayList()

2 เซ็นต์ของฉันใช้เวลา 2 ชั่วโมงเหมือนกัน :)


1

ผมได้รับเมื่อฉันถูกตั้งค่าA collection with cascade=”all-delete-orphan” was no longer referenced by the owning entity instance parent.setChildren(new ArrayList<>())เมื่อฉันเปลี่ยนเป็นparent.getChildren().clear()มันแก้ปัญหาได้

ตรวจสอบรายละเอียดเพิ่มเติมได้ที่: HibernateException - คอลเลกชันที่มีน้ำตก = "ทั้งหมดลบ-เด็กกำพร้า" ก็ไม่ได้อ้างถึงโดยอินสแตนซ์นิติบุคคลเป็นเจ้าของ


1

ฉันกำลังใช้ Spring Boot และมีปัญหานี้กับคอลเลกชันทั้งๆที่ไม่ได้เขียนทับโดยตรงเพราะฉันกำลังประกาศฟิลด์พิเศษสำหรับคอลเลกชันเดียวกันด้วยserializer ที่กำหนดเองและ deserializerเพื่อให้การแสดงที่เป็นมิตรกับส่วนหน้า ข้อมูล:

  public List<Attribute> getAttributes() {
    return attributes;
  }

  public void setAttributes(List<Attribute> attributes) {
    this.attributes = attributes;
  }

  @JsonSerialize(using = AttributeSerializer.class)
  public List<Attribute> getAttributesList() {
    return attributes;
  }

  @JsonDeserialize(using = AttributeDeserializer.class)
  public void setAttributesList(List<Attribute> attributes) {
    this.attributes = attributes;
  }

ดูเหมือนว่าแม้ว่าฉันจะไม่เขียนทับคอลเลกชันตัวเองแต่การกำจัดดีซีเรียลไลเซชั่นทำได้ภายใต้ประทุนซึ่งทำให้เกิดปัญหานี้เหมือนกันทั้งหมด วิธีแก้ไขคือเปลี่ยน setter ที่เกี่ยวข้องกับ deserializer เพื่อที่จะเคลียร์รายการและเพิ่มทุกอย่างแทนที่จะเขียนทับมัน:

  @JsonDeserialize(using = AttributeDeserializer.class)
  public void setAttributesList(List<Attribute> attributes) {
    this.attributes.clear();
    this.attributes.addAll(attributes);
  }

1

ฉันมีปัญหาเดียวกัน แต่เมื่อชุดเป็นโมฆะ เฉพาะในคอลเลกชันชุดในรายการงานค้นหา คุณสามารถลองใช้คำอธิบายประกอบแบบ hibernate @LazyCollection (LazyCollectionOption.FALSE) ติดตั้ง JPA คำอธิบายประกอบของ Fetch = FetchType.EAGER

ทางออกของฉัน: นี่คือการกำหนดค่าของฉันและทำงานได้ดี

@OneToMany(mappedBy = "format", cascade = CascadeType.ALL, orphanRemoval = true)
@LazyCollection(LazyCollectionOption.FALSE)
private Set<Barcode> barcodes;

@OneToMany(mappedBy = "format", cascade = CascadeType.ALL, orphanRemoval = true)
@LazyCollection(LazyCollectionOption.FALSE)
private List<FormatAdditional> additionals;

1
@OneToMany(mappedBy = 'parent', cascade= CascadeType.ALL, orphanRemoval = true)
List<Child> children = new ArrayList<>();

ฉันพบข้อผิดพลาดเดียวกันเมื่อฉันเพิ่มวัตถุลูกลงในรายการวัตถุย่อยที่มีอยู่

childService.saveOrUpdate(child);
parent.addToChildren(child);
parentService.saveOrUpdate(parent);

สิ่งที่แก้ไขปัญหาของฉันเปลี่ยนเป็น:

child = childService.saveOrUpdate(child);

ตอนนี้เด็กก็ฟื้นคืนชีพพร้อมรายละเอียดอื่น ๆ เช่นกันและมันก็ใช้ได้ดี


0

เพิ่มคำตอบที่โง่ของฉัน เรากำลังใช้ Spring Data Rest นี่คือความสัมพันธ์มาตรฐานของเรา รูปแบบที่ใช้ในที่อื่น

//Parent class
@OneToMany(mappedBy = 'parent', 
           cascade= CascadeType.ALL, orphanRemoval = true)
@LazyCollection(LazyCollectionOption.FALSE)
List<Child> children = new LinkedList<>()


//Child class
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = 'ParentID', updatable = false)
@JsonBackReference
Parent parent

ด้วยความสัมพันธ์ที่เราสร้างขึ้นมันตั้งใจเสมอว่าเด็ก ๆ จะถูกเพิ่มเข้ามาผ่าน repo ของพวกเขาเอง ฉันยังไม่ได้เพิ่ม repo การทดสอบการรวมที่เราได้ผ่านวงจรชีวิตทั้งหมดของเอนทิตีผ่านการเรียกใช้ REST ดังนั้นธุรกรรมจะปิดระหว่างคำขอ ไม่มี repo สำหรับเด็กหมาย JSON _embeddedมีลูกเป็นส่วนหนึ่งของโครงสร้างหลักแทนใน การอัพเดตพาเรนต์จะทำให้เกิดปัญหา


0

วิธีแก้ปัญหาต่อไปนี้ใช้ได้สำหรับฉัน

//Parent class
@OneToMany(mappedBy = 'parent', 
           cascade= CascadeType.ALL, orphanRemoval = true)
@OrderBy(value="ordinal ASC")
List<Child> children = new ArrayList<>()

//Updated setter of children 
public void setChildren(List<Children> children) {
    this.children.addAll(children);
    for (Children child: children)
        child.setParent(this);
}


//Child class
@ManyToOne
@JoinColumn(name="Parent_ID")
private Parent parent;

0

แทนที่จะกำหนดชุดสะสมใหม่

public void setChildren(Set<ChildEntity> children) {
    this.children = children;
}

แทนที่องค์ประกอบทั้งหมดด้วย

public void setChildren(Set<ChildEntity> children) {
    Collections.replaceAll(this.children,children);
}


0

hibernate-enhance-maven-pluginมันอาจจะเกิดจาก เมื่อฉันเปิดใช้งานenableLazyInitializationคุณสมบัติข้อยกเว้นนี้เริ่มเกิดขึ้นกับคอลเล็กชันขี้เกียจของฉัน ฉันใช้โหมดไฮเบอร์เนต 5.2.17 ขั้นสุดท้าย

ทราบปัญหาการจำศีลทั้งสองนี้:


0

Mine แตกต่างอย่างสิ้นเชิงกับ Spring Boot! สำหรับฉันมันไม่ได้เกิดจากการตั้งค่าคุณสมบัติการเก็บรวบรวม

ในการทดสอบของฉันฉันพยายามสร้างเอนทิตีและได้รับข้อผิดพลาดนี้สำหรับคอลเล็กชันอื่นที่ไม่ได้ใช้!

หลังจากพยายามมากฉันเพิ่งเพิ่ม@Transactionalวิธีการทดสอบและแก้ไขมัน ไม่มีเหตุผลแม้ว่า


0

ตรงข้ามกับคำตอบก่อนหน้านี้ฉันมีข้อผิดพลาดเดียวกัน: "ชุดสะสมที่มี cascade =” all-delete-orphan” ไม่ได้ถูกอ้างอิงอีกต่อไป .... " เมื่อฟังก์ชั่นตัวตั้งค่าของฉันมีลักษณะดังนี้:

public void setTaxCalculationRules(Set<TaxCalculationRule> taxCalculationRules_) {
    if( this.taxCalculationRules == null ) {
        this.taxCalculationRules = taxCalculationRules_;
    } else {
        this.taxCalculationRules.retainAll(taxCalculationRules_);
        this.taxCalculationRules.addAll(taxCalculationRules_);
    }
}

แล้วมันก็หายไปเมื่อฉันเปลี่ยนเป็นเวอร์ชั่นธรรมดา:

public void setTaxCalculationRules(Set<TaxCalculationRule> taxCalculationRules_) {
    this.taxCalculationRules = taxCalculationRules_;
}

(รุ่นไฮเบอร์เนท - ลองทั้ง 5.4.10 และ 4.3.11 ใช้เวลาหลายวันพยายามแก้ปัญหาทุกประเภทก่อนกลับมาที่การบ้านใน setter สับสนตอนนี้เพราะเหตุนี้)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.