Java 如何在MySQL数据库中使用EntityManager编写?

Java 如何在MySQL数据库中使用EntityManager编写?,java,mysql,jakarta-ee,dao,entitymanager,Java,Mysql,Jakarta Ee,Dao,Entitymanager,嗨,我有一个JavaEE应用程序,使用JPA。(EJB)。我有两个实体 票证和用户类 我的问题是我无法在数据库中写入用户:(票证有效 以下是用户类: @Entity @NamedQueries({ @NamedQuery(name=User.QUERY_GETALL,query="SELECT c FROM User c"), @NamedQuery(name=User.QUERY_GETALLTICKETS,query="SELECT c FROM Ticket c WHERE

嗨,我有一个JavaEE应用程序,使用JPA。(EJB)。我有两个实体

票证和用户类

我的问题是我无法在数据库中写入用户:(票证有效

以下是用户类:

@Entity
@NamedQueries({
    @NamedQuery(name=User.QUERY_GETALL,query="SELECT c FROM User c"),
    @NamedQuery(name=User.QUERY_GETALLTICKETS,query="SELECT c FROM Ticket c WHERE c.username LIKE :userUsername"),
})
public class User implements Serializable{

...

}
以下是UserDAO接口:

public interface UserDAO {

    public User create(User user);

    public User update(User user);

    public void remove(int id);

    public User getUser(int id);

    public List<User> getAllUsers();

    public List<Ticket> getAllUserTickets(String username);
}
以下是用于创建用户和票证的类:

@Singleton
@Startup
public class InitializationBean {

    @EJB
    private TicketDAO ticketDAO;

    @EJB
    private UserDAO userDAO;

    @PostConstruct
    private void initialize(){

        if(ticketDAO.getAllTickets().size() == 0){

            //User Dummy anlegen

            User user = new User();

            user.setFirstname("Wladimir");
            ...

            userDAO.create(user);

            //Ticket Dummy anlegen

            Ticket ticket = new Ticket();

            ticket.setName("DummyTicket");
            ...

            ticketDAO.create(ticket);
        }

    }
}
如果我启动应用程序,我可以在MySQL数据库中看到票据是创建的,但用户不是:(

控制台中的错误:

00:07:52,486 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (ServerService Thread Pool -- 59) Data truncation: Data too long for column 'user' at row 1

00:07:52,579 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 59) MSC000001: Failed to start service jboss.deployment.subunit."TaraTicket.ear"."TaraTicketEJB.jar".component.InitializationBean.START: org.jboss.msc.service.StartException in service jboss.deployment.subunit."TaraTicket.ear"."TaraTicketEJB.jar".component.InitializationBean.START: java.lang.IllegalStateException: JBAS011048: Failed to construct component instance

“数据对于第1行的列'user'来说太长了”,您是否对列设置了任何长度限制?如果不是在代码中,可能是在创建表脚本中?这很疯狂,因为表是创建的,但是来自用户的数据不是插入到表中的,而是在每一列中都是null:(好的,我现在在我的InitializationBean中使用了一个try catch,它可以工作O.O
00:07:52,486 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (ServerService Thread Pool -- 59) Data truncation: Data too long for column 'user' at row 1

00:07:52,579 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 59) MSC000001: Failed to start service jboss.deployment.subunit."TaraTicket.ear"."TaraTicketEJB.jar".component.InitializationBean.START: org.jboss.msc.service.StartException in service jboss.deployment.subunit."TaraTicket.ear"."TaraTicketEJB.jar".component.InitializationBean.START: java.lang.IllegalStateException: JBAS011048: Failed to construct component instance