Hibernate @Inheritance (стратегии = InheritanceType.JOINED) с различными схемами вызывает ошибку (HHH000099) - PullRequest
0 голосов
/ 30 мая 2018

После обновления с Hibernate 4.2 до 5.5.5 мое наследование больше не работает.При запуске моего приложения выдается следующая ошибка:

ОШИБКА AssertionFailure: 33 - HHH000099: произошла ошибка подтверждения (это может указывать на ошибку в Hibernate, но более вероятно из-за небезопасного использования сеанса): org.hibernate.AssertionFailure: Таблица BASE.ANIMAL не найдена

здесь мои уроки:

cat.java

package ext;

import java.io.Serializable;
import javax.persistence.*;
@Entity
@org.hibernate.annotations.Proxy(lazy=false)
@Table(name="CAT", schema="EXT")
@Inheritance(strategy=InheritanceType.JOINED)
@PrimaryKeyJoinColumn(name="ANIMALid", referencedColumnName="id")
public class CAT extends base.ANIMAL implements Serializable {
    public CAT() {
    }

    public String toString() {
        return super.toString();
    }

}

animal.java

package base;

import java.io.Serializable;
import javax.persistence.*;
@Entity
@org.hibernate.annotations.Proxy(lazy=false)
@Table(name="ANIMAL", schema="BASE")
@Inheritance(strategy=InheritanceType.JOINED)
@DiscriminatorValue("ANIMAL")
public class ANIMAL implements Serializable {
    public ANIMAL() {
    }

    @Column(name="id", nullable=false, unique=true, length=10)  
    @Id 
    @GeneratedValue(generator="BASE_ANIMAL_ID_GENERATOR")   
    @org.hibernate.annotations.GenericGenerator(name="BASE_ANIMAL_ID_GENERATOR", strategy="native", parameters={ @org.hibernate.annotations.Parameter(name="schema", value="BASE") })   
    private int id;

    private void setId(int value) {
        this.id = value;
    }

    public int getId() {
        return id;
    }

    public int getORMID() {
        return getId();
    }

    public String toString() {
        return String.valueOf(getId());
    }

}

testclass

package ormsamples;

import org.orm.*;
public class CreateJoinedinheritanceData {
    public void createTestData() throws PersistentException {
        PersistentTransaction t = ext.JoinedinheritancePersistentManager.instance().getSession().beginTransaction();
        try {
            base.ANIMAL bASEANIMAL = base.ANIMALDAO.createANIMAL();
            // Initialize the properties of the persistent object here
            base.ANIMALDAO.save(bASEANIMAL);
            ext.CAT eXTCAT = ext.CATDAO.createCAT();
            // Initialize the properties of the persistent object here
            ext.CATDAO.save(eXTCAT);
            t.commit();
        }
        catch (Exception e) {
            t.rollback();
        }

    }

    public static void main(String[] args) {
        try {
            CreateJoinedinheritanceData createJoinedinheritanceData = new CreateJoinedinheritanceData();
            try {
                createJoinedinheritanceData.createTestData();
            }
            finally {
                ext.JoinedinheritancePersistentManager.instance().disposePersistentManager();
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}

пропустил ли я этап миграции или есть ошибка в последнем выпуске hibernate 5?

с нетерпением ждем ваших предложений!

1 Ответ

0 голосов
/ 31 мая 2018

После еще одного исследования я столкнулся с этой ошибкой гибернации HHH-10490 .

Она была отклонена с ответом на использование catalog вместо schema.К сожалению, дальнейшее объяснение не было дано, но если я изменю эту строку

@Table(name="ANIMAL", schema="BASE")

на

@Table(name="ANIMAL", catalog="BASE")

, все снова будет работать нормально.

Аналогично этому посту , также описанный автором ошибки здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...