我有以下问题。也许设计不是那么好,但我找不到更好的设计。
我有一个实体类 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
答案 0 :(得分:3)
仅对容器(如EJB)创建的对象支持依赖注入。这是依赖框架工作的常用方式(包括Spring和Google Guice)。
您可以传递服务(当前未使用?)或EntityManager作为参数。