次の問題があります。多分デザインはそれほど良いものではないかもしれませんが、私はより良いものを見つけることができませんでした。エンティティクラスEnumeration内のエンティティマネージャを使用
は、私は、エンティティクラスDevice.java
@Entity (name = "device")
public class Device {
public enum DeviceType {
STROM,
LICHT,
TEMPERATUR,
LUFTFEUCHTIGKEIT,
BEWEGUNG,
DIMMEN
};
public static enum HomematicAttribute {
STATE,
TEMPERATURE,
HUMIDITY,
LOWBATTERY,
MOVEMENT,
LEVEL
}
@Id
@GeneratedValue (strategy = GenerationType.IDENTITY)
private Integer id;
// Some other fields and getter and setter
を持っていると私は、そのクラス/エンティティ
public static enum HomematicDeviceName {
LICHT_FRONT("HM_DEVICE_LICHT_FRONT", DeviceType.DIMMEN, HomematicAttribute.LEVEL),
LICHT_GANG("HM_DEVICE_LICHT_GANG", DeviceType.DIMMEN, HomematicAttribute.LEVEL),
...
// constructor and getters
@PersistenceContext
EntityManager em;
@EJB
private DatabaseServiceLocal databaseService;
public Device getDevice() {
if(em == null) System.out.println("Entitymanager ist null innerhalb der Enumeration ...");
if(databaseService == null) System.out.println("databaseService ist null innerhalb der Enumeration ...");
System.out.println("----");
return (Device) em.createNamedQuery(Device.findByIdentifier).setParameter("identifier", databaseKey).getSingleResult();
}
}
両方のemの内側に、この列挙を持っているとdatabaseServiceがnullです。目標は列挙型と他の方法からエンティティを取得することです。私はエンティティと仕事したくない。代わりに私は列挙型で作業したいが、時にはエンティティが必要になる。だから私は、私の列挙からデバイスエンティティを取得するために、このようなことをすることができると思った。
アイデアはありますか?
おかげで、 Hauke
依存性注入は、列挙体内でも良いでしょう。しかし、それをメソッドに渡す考えはそれほど悪くはありません。それほど素晴らしいことではありませんが、少なくともそれはうまくいくはずです。 ありがとうございます! – Hauke