Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';不存在实体。EJBException_Java_Jsf_Jakarta Ee_Jpa - Fatal编程技术网

Java Can';不存在实体。EJBException

Java Can';不存在实体。EJBException,java,jsf,jakarta-ee,jpa,Java,Jsf,Jakarta Ee,Jpa,试图学习JPA、EJB、ManagedBeans、JSF等,但我在尝试持久化实体时遇到了一个错误。这就是通过我的facelet调用BlogManager保存方法。下面是JSF、ManagedBean、EJB和实体 @Entity @Table(name = "BLOG") @XmlRootElement @NamedQueries({ @NamedQuery(name = "Blog.findAll", query = "SELECT b FROM Blog b"), @NamedQuery(n

试图学习JPA、EJB、ManagedBeans、JSF等,但我在尝试持久化实体时遇到了一个错误。这就是通过我的facelet调用BlogManager保存方法。下面是JSF、ManagedBean、EJB和实体

@Entity
@Table(name = "BLOG")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Blog.findAll", query = "SELECT b FROM Blog b"),
@NamedQuery(name = "Blog.findByBlogid", query = "SELECT b FROM Blog b WHERE b.blogid = :blogid"),
@NamedQuery(name = "Blog.findByText", query = "SELECT b FROM Blog b WHERE b.text = :text"),
@NamedQuery(name = "Blog.findByTimestamp", query = "SELECT b FROM Blog b WHERE b.timestamp = :timestamp")})
public class Blog implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@NotNull
@Column(name = "BLOGID")
private Integer blogid;
@Size(max = 5000)
@Column(name = "TEXT")
private String text;
@Column(name = "TIMESTAMP")
@Temporal(TemporalType.TIMESTAMP)
private Date timestamp;

public Blog() {
}

public Blog(Integer blogid) {
    this.blogid = blogid;
}
Getters and Setters...
EJB:

@无状态
公共类BlogFacade扩展了AbstractFacade{
@PersistenceContext(unitName=“MyBlogPU”)
私人实体管理者;
@凌驾
受保护的EntityManager getEntityManager(){
返回em;
}
公共博客门面(){
超级(Blog.class);
}
公共列表getBlogs(){
em.createNativeQuery(“使用博客”).executeUpdate();
Query Query=em.createNamedQuery(“Blog.findAll”);
返回query.getResultList();
}
公共void deleteBlog(int-id){
Query Query=em.createNativeQuery(“从blogid=:blogid的博客中删除”);
setParameter(“:blogid”,id);
query.executeUpdate();
}
}
ManagedBean

@Named("blogManager")
@ManagedBean
@SessionScoped
public class BlogManager implements Serializable {
private Blog BlogEntity;

@EJB
private BlogFacade BlogFacade;

@PostConstruct
public void init(){
    BlogEntity = new Blog();
}

public Blog getBlogEntity(){
    return this.BlogEntity;
}

public void setBlogEntity(Blog BlogEntity){
    this.BlogEntity = BlogEntity;
}

public void save(){
    BlogFacade.create(BlogEntity);
}

public void delete(){
    BlogFacade.remove(BlogEntity);
}

public void deleteBlog(@QueryParam("blogid") int id){
    BlogFacade.deleteBlog(id);
}

public List<Blog> getBlogs(){
    return BlogFacade.getBlogs();
}
}
@Named(“blogManager”)
@ManagedBean
@会议范围
公共类BlogManager实现可序列化{
私人博客实体;
@EJB
私人博客门面;
@施工后
公共void init(){
BlogEntity=新博客();
}
公共博客getBlogEntity(){
返回此.blog实体;
}
公共博客实体(博客博客实体){
this.BlogEntity=BlogEntity;
}
公共作废保存(){
创建(BlogEntity);
}
公共作废删除(){
移除(BlogEntity);
}
public void deleteBlog(@QueryParam(“blogid”)int-id){
deleteBlog(id);
}
公共列表getBlogs(){
返回BlogFacade.getBlogs();
}
}
小脸

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
            xmlns:h="http://xmlns.jcp.org/jsf/html"
            xmlns:p="http://xmlns.jcp.org/jsf/passthrough"
            xmlns:c="http://java.sun.com/jsp/jstl/core"
            xmlns="http://www.w3.org/1999/xhtml"
            template="./template.xhtml"
            xmlns:f="http://xmlns.jcp.org/jsf/core">

<ui:define name="left">
    <h:form>
        <h:inputTextarea value="#{blogManager.blogEntity.text}" p:placeholder="Tweet max 30 chars." style="width: 100%; height:150px; resize: none;" /><br/><br/>
        <h:commandButton value="Tweet" action="#{blogManager.save}" />
    </h:form>
</ui:define>

<ui:define name="right">
    <c:forEach items="#{blogManager.getBlogs()}" var="item">
        <h:outputText value="#{item.getText()}" />&nbsp;&nbsp;
        Likes: &nbsp;&nbsp;<h:outputText value="" />&nbsp;&nbsp;&nbsp;
        <h:commandLink action="" value="like">
            <f:param name="tweetid" value="" />
            <f:param name="username" value="" />
        </h:commandLink>&nbsp;<br />
        <textarea>
            <h:outputText value="" />
        </textarea>
    </c:forEach>
</ui:define>

</ui:composition>



喜欢:

不确定这是否被允许,但我已经将strack跟踪上传到了,而不是把它弄得乱七八糟。是的,我收到一个EJB错误。

你的应用程序在bean验证时失败。看看它。您在id字段上有@NotNull注释(为什么?主键无论如何不应该为null),但从您提供的源代码中,我无法理解id是如何生成的。没有定义任何策略。添加

如上所述,在此处张贴stacktrace。但是,当您在任何Java中遇到异常时的标准过程是:在Google中发布它(确保删除所有特定于您的内容,例如类名),因为您不是第一个得到它的人。你试过了吗?
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
            xmlns:h="http://xmlns.jcp.org/jsf/html"
            xmlns:p="http://xmlns.jcp.org/jsf/passthrough"
            xmlns:c="http://java.sun.com/jsp/jstl/core"
            xmlns="http://www.w3.org/1999/xhtml"
            template="./template.xhtml"
            xmlns:f="http://xmlns.jcp.org/jsf/core">

<ui:define name="left">
    <h:form>
        <h:inputTextarea value="#{blogManager.blogEntity.text}" p:placeholder="Tweet max 30 chars." style="width: 100%; height:150px; resize: none;" /><br/><br/>
        <h:commandButton value="Tweet" action="#{blogManager.save}" />
    </h:form>
</ui:define>

<ui:define name="right">
    <c:forEach items="#{blogManager.getBlogs()}" var="item">
        <h:outputText value="#{item.getText()}" />&nbsp;&nbsp;
        Likes: &nbsp;&nbsp;<h:outputText value="" />&nbsp;&nbsp;&nbsp;
        <h:commandLink action="" value="like">
            <f:param name="tweetid" value="" />
            <f:param name="username" value="" />
        </h:commandLink>&nbsp;<br />
        <textarea>
            <h:outputText value="" />
        </textarea>
    </c:forEach>
</ui:define>

</ui:composition>