Я искал в Stackoverflow, но не нашел ответа на свой вопрос. В любом случае, вот примерная схема того, что я пытаюсь построить с помощью пружины:
ConcreteToolA
-------------
id(pk)
....
ConcreteToolB
-------------
id(pk)
....
Resource
--------
id(pk)
name
...
UsedResource
------------------
resource_id(pk)
tool_id(pk)
tool_type(pk)
quantity
....
А в Java у меня есть что-то вроде этого:
public interface Tool {
}
@Entity
@Table(name = "ConcreteToolA")
public class ConcreteToolA implements Tool {
@OneToMany
private List<UsedResource> resources;
private int toolType = Const.A;
}
@Entity
@Table(name = "ConcreteToolB")
public class ConcreteToolB implements Tool {
@OneToMany
private List<UsedResource> resources;
private int toolType = Const.B;
}
@Enity
@Table(name = "Resource")
public class Resource {
private String name;
}
@Entity
@Table(name = "UsedResource")
public class UsedResource{
//one-to-many reference to tool
private Tool usedBy;
private int quantity;
}
Подводя итог Я хочу общий c способ связать ресурсы с различными (абстрактными) сущностями, такими как инструменты в моем случае. Но в будущем могут появиться дополнительные инструменты или другие более абстрактные объекты, которые могут потреблять ресурсы (люди и др. c.). Поэтому я хочу связать отношение (UsedResource) с интерфейсом и, возможно, нужен какой-то пользовательский установщик?
Может быть, я использовал только слова для поиска, и это уже объяснялось несколько раз ... Если бы кто-то мог мне здесь помочь, я был бы счастлив.