Отношение n:3 Переход в спящий режим

#java #hibernate

#java #переход в спящий режим

Вопрос:

Мне было интересно, как смоделировать отношение n: 3 в режиме гибернации. Я видел много примеров использования аннотаций @ManyToMany, @OneToMany.. и т.д., но ни один из них n: x, x не является натуральным числом.
Не могли бы вы привести мне простой пример?? Заранее спасибо

Комментарии:

1. Не могли бы вы предоставить более подробную информацию о реальном примере? Являются ли три объекта, на которые даны ссылки, одной и той же ролью или у них разные роли? В первом случае вам, вероятно, придется использовать ManyToMany, во втором случае вы могли бы использовать три отношения distince OneToMany.

Ответ №1:

Вы можете использовать средства проверки. я думаю, что ваше требование нельзя рассматривать как проблему проектирования базы данных, вместо этого это проблема проверки. вместо этого используйте валидатор. Вы можете написать свой пользовательский валидатор bean (JSR-303), который проверяет количество элементов в списках:

 public class MyListSizeValidator implements
        ConstraintValidator<MyListConstraintAnnotation, List<?> /* list of any type */ > {

    public void initialize(MyListConstraintAnnotation myannotation) {
        //To change body of implemented methods use File | Settings | File Templates.
    }

    public boolean isValid(List<?> mylist, ConstraintValidatorContext constraintValidatorContext) {
        return mylist.size() < 4;
    }
}

@Documented
@Constraint(validatedBy = MyListSizeValidator.class)
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RetentionPolicy.RUNTIME)
public @interface MyListConstraintAnnotation {
    String message() default "List is full!";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
}
  

использование было бы таким:

 class MyCronBean {
    @NotNull
    @MyListConstraintAnnotation
    private List<MyObject> list;
    /** setters and getters */
}
  

Обновить:
вы можете использовать для реализации JSR-303 «hibernate validator» в Maven:

 <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>4.0.2.GA</version>
</dependency>
  

Комментарии:

1. Какие зависимости мне нужно импортировать, чтобы получить эти аннотации??

2. мой пост был обновлен зависимостью. используйте средство проверки гибернации.

3. Спасибо, возможно, чтобы сделать его более гибким, я собираюсь сузить это отношение на более высоком уровне и оставить это как n: m . В любом случае полезно знать о валидаторе. Большое вам спасибо

Ответ №2:

Если вы не говорите о троичных ассоциациях (m: n:1), то вам нужно использовать @ManyToMany .

Комментарии:

1. Нет ли возможности сузить взаимосвязь?? Как я мог бы это смоделировать? Спасибо, что ответили

2. Я не говорю о троичной ассоциации. Мне нужен * —- 3 B, A, B являются сущностями

3. Blanca Hdez: отношение n: 3 — это просто m: n (выполненное @ManyToMany) с некоторой дополнительной логикой. — Вам нужно реализовать эту логику добавления самостоятельно.