- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 Java EE、Glassfish 和 Netbeans 做一个软件工程项目,由于缺乏 java 经验,我遇到了一个问题。
我正在开发一个网站,为用户提供创建一些 Activity 的可能性。
我能够在表事件
中保存有关事件的信息(ID、名称、地点、日期、创建者),现在的问题是填充另一个表日历
.该表中只有 3 个属性:ID(自动且按顺序生成)、创建者电子邮件和事件 ID。此calendar
表的目的是收集所有耦合用户事件:事件不仅可以与其创建者耦合,还可以与其受邀的其他用户耦合。
当我尝试持久保存 calendar
表中的数据时,我收到 NullPointerException
因为在 event
表中生成了 ID自动,我认为当我调用 getEventID
方法时,该值仍然是 null
。
如何激活 CalendarManager
,它只需获取事件的创建者 和 ID 并将它们写入 日历
表?
我希望我已经清楚了,这里有一些文件:
EventManager
工作正常:
@Stateless
public class EventManager {
@PersistenceContext
public EntityManager em;
@Inject
Principal principal;
public void saveEvent(Event event) {
em.persist(event);
}
public void deleteEvent(Event event) {
em.remove(event);
}
}
CalendarEventsManager
很好,但没有收到正确的参数:
@Stateless
public class CalendarEventsManager {
@PersistenceContext
public EntityManager cm;
@Inject
Principal principal;
public void saveCalendarEvents(CalendarEvents calendarevents) {
cm.persist(calendarevents);
}
public void deleteCalendarEvents(CalendarEvents calendarevents) {
cm.remove(calendarevents);
}
}
下面是当用户单击“创建事件”时激活的 Bean 中的关键部分:
public String saveEvent() {
/* obtain the creator's email */
creator = um.getLoggedUser().getEmail();
this.event.setCreator(creator);
/* save information in db event */
em.saveEvent(event);
/* save information in db calendar */
eventid = event.getID();
this.calendarevents.setUserEmail(creator);
this.calendarevents.setEventID(eventid);
cm.saveCalendarEvents(calendarevents);
/* next page to visualize */
return "displayEvent";
}
直到 em.saveEvent(event)
一切都很好并且数据库已正确更新,但问题是当我执行 eventid = getID()
(getID
在 Event
类中是公开的并且是正确的)。系统无法读取 ID,因为它没有从刚刚更新的数据库中读取。
这里是事件类:
@Entity
@Table(name="event")
public class Event implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE)
private Integer id;
@NotNull(message = "May not be empty")
private String name;
@NotNull(message = "May not be empty")
private String place;
@NotNull(message = "May not be empty")
private String eventdate;
@NotNull(message = "May not be empty")
private String type;
@NotNull(message = "May not be empty")
private String visibility;
/*@NotNull(message = "May not be empty")
private String weather;*/
@NotNull(message = "May not be empty")
private String creator;
public void setID(Integer id){
this.id = id;
}
public Integer getID() {
return id;
}
public void setName(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPlace() {
return place;
}
public void setPlace(String place) {
this.place = place;
}
public String getDate() {
return eventdate;
}
public void setDate(String eventdate) {
this.eventdate = eventdate;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getVisibility() {
return visibility;
}
public void setVisibility(String visibility) {
this.visibility = visibility;
}
/*public String getWeather() {
return weather;
}
public void setWeather(String weather) {
this.weather = weather;
}*/
public String getCreator() {
return creator;
}
public void setCreator(String creator) {
this.creator = creator;
}
您有解决这个问题的想法吗?我已经阅读过有关 @PostPersist
注释的内容,但我不知道如何正确应用它:(
感谢所有愿意帮助我的人的建议:D
编辑1:错误可能出在 saveEvent() 中的这段代码中:
this.calendarevents.setUserEmail(creator);
this.calendarevents.setEventId(eventid);
System.out.println("event id after get is: " + this.calendarevents.getUserEmail());
System.out.println("event id after get is: " + this.calendarevents.getEventId());
cm.saveCalendarEvents(calendarevents);
我已经使用 system.out.println 来验证该值,但错误出现在“this.calendarevents”中,因为没有 system.out 的迹象!这里有完整的 Bean!
@Named(value = "createBean")
@RequestScoped
public class CreateEventBean {
@EJB
private EventManager em;
@EJB
private UserManager um;
private Event event;
private String creator;
@EJB
private CalendarEventsManager cm;
private Integer eventid=0;
private CalendarEvents calendarevents;
public CreateEventBean() {
}
public Event getEvent() {
if (event == null){
event = new Event();
}
return event;
}
public void setEvent(Event event) {
this.event = event;
}
public CalendarEvents getCalendarEvent() {
if (calendarevents == null){
calendarevents = new CalendarEvents();
}
return calendarevents;
}
public void setCalendarEvents(CalendarEvents calendarevents) {
this.calendarevents = calendarevents;
}
public String saveEvent(){
/*obtain the creator's email*/
creator=um.getLoggedUser().getEmail();
this.event.setCreator(creator);
/*save information in db event*/
em.saveEvent(event);
/*save information in db calendar*/
System.out.println("event id before get is: " + eventid);
eventid=event.getId();
System.out.println("event id after get is: " + eventid);
this.calendarevents.setEventId(eventid);
System.out.println("eventid in calendar could be: " + this.calendarevents.getEventId());
this.calendarevents.setUserEmail(creator);
System.out.println("useremail in calendar could be: " + this.calendarevents.getUserEmail());
cm.saveCalendarEvents(calendarevents);
/*next page to visualize*/
return "displayEvent";
}
}
我真的没有发现“this.calendarevents.setEventId(eventid);”中的错误即第 80 行,错误是这样的: Caused by: Warning: #{createBean.saveEvent()}: java.lang.NullPointerExceptionjavax.faces.FacesException:#{createBean.saveEvent()}:java.lang.NullPointerException [引起:java.lang.NullPointerException at it.nyquistmeteocal.beans.CreateEventBean.saveEvent(CreateEventBean.java:80)]
这是 CalendarEvents 类:
@Entity
@Table(name="calendarevents")
public class CalendarEvents implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE)
private Integer id;
@NotNull(message = "May not be empty")
private String useremail;
@NotNull(message = "May not be empty")
private Integer eventid;
public Integer getId() {
return id;
}
public void setName(Integer id) {
this.id = id;
}
public String getUserEmail() {
return useremail;
}
public void setUserEmail(String useremail) {
this.useremail = useremail;
}
public Integer getEventId() {
return eventid;
}
public void setEventId(Integer eventid) {
this.eventid = eventid;
}
}
最佳答案
问题我已经解决了!!
我只是这样修改了日历事件的声明:
private CalendarEvents calendarevents = new CalendarEvents();
我之前没有这样做,我认为如果calendarevents指向NULL它将执行这部分代码:
public CalendarEvents getCalendarEvent() {
if (this.calendarevents == null){
this.calendarevents = new CalendarEvents();
}
return this.calendarevents;
}
public void setCalendarEvents(CalendarEvents calendarevents) {
calendarevents = calendarevents;
}
这是否意味着我不需要最后一部分? :)
关于java - 将一个实体持久化到另一个实体之后 ~ Netbeans、J2E、bean、EntityManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27488412/
都是整数,但一直报错 "Only assignment, call, increment, decrement, await, and new object expressions can be us
我有以下情况:一个“对话”实体/表,它有多个关联的标签。Tag 也是一个实体/表 - key/id 是 tagName(一个字符串)。 在客户端 (javascript),我在处理标签时使用字符串数组
我想通过 maven java 源代码生成器自动生成 java 源代码。我想通过查看一个大实体 xml 文件来创建实体类,该文件将包含系统中的所有实体和实体关系。据我搜索,目前maven中没有这样的插
我有一段时间有这个疑问,有人说 EJB 3.0 中没有所谓的实体 bean。有没有可能这样说,EJB 3.0 使用 JPA 来持久化数据并且没有对以前版本(EJB 2.1)中的实体 bean 进行增强
我观看了关于 Core Data 的 2016 WWDC 视频并查看了各种教程。我见过使用 Core Data Framework 创建对象以持久保存到 managedObjectContext 中的
实体(entites) 用于定义引用普通文本或特殊字符的快捷方式的变量,可在内部或外部进行声明 实体引用是对实体的引用 声明一个内部实体 语法: <!ENTITY 实体名称 "
This page建议 !ENTITY: If you want to avoid duplication, consider using XML entities (for example, [ ]
我正在努力解决这个问题:如何判断一个概念是聚合根还是只是一个实体(属于 AR 的一部分)? : 他们都有 ID 它们都是由实体或值对象组成 也许如果我需要引用其他 AR 中的实体,那么我需要将其设为
我使用 Symfony2 和 Doctrine,我有一个关于实体的问题。 出于性能方面的考虑,我想知道是否可以在不进行所有关联的情况下使用实体? 目前,我还没有找到另一种方法来创建继承带有关联的类的模
我已经尝试在 HTML 中包含以下代码,用于附加文件符号。但它显示一个空的白框。 📎 📎 📎 是否有替代的 HTML 附加文件符号实体? 如果没有,我们可以手动创建
我在 grails 中有一个域类......我如何让 gorm 在创建数据库时忽略这个实体?就别管它了。 最佳答案 如果我理解,你不想从域类创建表?如果是,请在域类中使用此代码: static map
我正在努力解决这个问题:如何判断一个概念是聚合根还是只是一个实体(属于 AR 的一部分)? : 他们都有 ID 它们都是由实体或值对象组成 也许如果我需要引用其他 AR 中的实体,那么我需要将其设为
我已经尝试在 HTML 中包含以下代码,用于附加文件符号。但它显示一个空的白框。 📎 📎 📎 是否有替代的 HTML 附加文件符号实体? 如果没有,我们可以手动创建
如何在我的实体中以 14-04-2017 格式存储日期? 但我必须从字符串中解析它。 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-
我需要从两个连接表中获取数据。数据集是什么类型?我是否需要创建一个包含这两个表中的属性的类以用于数据集类型,或者我可以使用实体模式中的类型。我如何修改我的方法才能正常工作? public static
好的,我们正在尝试建立一个中央站点来查看来自销售我们产品的多个供应商的数据。这些多个供应商使用不同的销售系统(确切地说是两个不同的系统),因此每个数据库看起来完全不同。我们与他们的数据库同步,因此数据
我是 backbone 的新手。但是当我研究模型实体时,我不明白一些事情。如果我们可以像 java 或 C# 这样的标准语言一样定义模型属性,那就太好了。有没有可能是这样的。所以我的想法是这样的: M
我想获取存储在可绘制的 xml 文件中的形状的颜色。 我来到了将 Drawable 存储在 Drawable 变量中的步骤,所以,现在我想获取形状的颜色(纯色标签)。 有什么建议吗? 最佳答案 Gra
实体是直接映射到我们的数据库(我们用于 Hibernate)的类。 在调用 DAO 之前,我们的服务类包含这些实体的业务逻辑。 我们还有命令对象,它们是与特定 View 相关的 POJO。有人告诉我实
在我的应用程序中,我需要显示不同存储过程返回的记录列表。每个存储过程返回不同类型的记录(即列数和列类型不同)。 我最初的想法是为每种类型的记录创建一个类,并创建一个函数来执行相应的存储过程并返回 Li
我是一名优秀的程序员,十分优秀!