У меня есть сценарий что-то вроде этогоНастройка значение дискриминатора динамически (отображения Hibernate)
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "TANDC_TYPE", discriminatorType = DiscriminatorType.STRING, length = 32)
@Table(name = "T_TERMS_AND_CONDITIONS", schema = DataSourceConfig.PERSISTENCE_SCHEMA_NAME)
public class TermsAndConditions {
...
}
И это дочерний класс, имеющий значение дискриминатора «CREATOR»
@Entity
@DiscriminatorValue("CREATOR")
public class AccountTermsAndConditions extends TermsAndConditions {
...
}
Другой класс ребенок, имеющий значение дискриминатора «ЗАКАЗ»
@Entity
@DiscriminatorValue("ORDER")
public class OrderTermsAndConditions extends TermsAndConditions {
...
}
Здесь мое требование заключается в том, чтобы облегчить использование Условий и Кондити ons для нового типа учетной записи, называемого «USER», который связан с моим AccountTermsAndConditions
.
Теперь я не хочу добавлять еще один класс для типа учетной записи «ПОЛЬЗОВАТЕЛЬ» (что-то вроде UserTermsAndConditon
), так как «СОЗДАТЕЛЬ» и «ПОЛЬЗОВАТЕЛЬ» относятся к типам учетных записей.
Мне нужно решение здесь, чтобы установить значение дискриминатора для «CREATOR» или «USER» в зависимости от типа учетной записи.
Есть ли способ установить значение дискриминатора внутри класса на основе условий?
Я также видел документацию оракула, который гласит:
«Если аннотация DiscriminatorValue не указана и используются столбец дискриминатора, функция поставщика конкретного будет использоваться для генерирования значения, представляющее тип сущности. "
Как я могу продолжить реализацию?
Пожалуйста, помогите мне.
Здесь я хочу использовать «CREATOR» или «USER» на основе проверки типа пользователя. Я не хочу, чтобы TANDC_TYPE был «CREATOR» для «CREATOR» и «USER». Это возможно ? Что-то вроде if (userType.equals («CREATOR») {db.setTandCType («CREATOR»);} else {db.setTandCType («USER»);} – user3152686
Если вы хотите, чтобы ваш код повлиял на это, я не вижу причин, почему вы тогда просто не можете расширять 'AccountTermsAndConditions' новым значением дискриминатора для' USER' без дополнительных полей. – Naros
Спасибо. – user3152686