java - 异常描述:NullPointerException
问题描述
我正在使用 postgresql 数据库在 java 中开发一个项目,当我尝试插入数据时,或者更确切地说,当我提交时,我遇到了问题。看起来它来自 ID (game_id) 的问题,但我不知道是什么。
这是我的实体的代码:
@Entity
@Cacheable(true)
@Table(name = "game")
@Multitenant(MultitenantType.TABLE_PER_TENANT)
@TenantTableDiscriminator(type = TenantTableDiscriminatorType.SCHEMA, contextProperty = PersistenceUnitProperties.MULTITENANT_PROPERTY_DEFAULT)
public class Game implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@Column(name = "game_id", unique = true, nullable = false)
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer gameId;
@Column(name = "game_title", length = 256)
private String gameTitle;
@Temporal(TemporalType.DATE)
@Column(name = "game_released")
private Date gameReleased;
@Column(name = "game_img")
private Byte[] gameImg;
@Column(name = "game_desc", length = 3072)
private String gameDesc;
这是我尝试插入数据的方式:
EntityManagerFactory emf = Persistence.createEntityManagerFactory("projet_nintendo");
EntityManager em = emf.createEntityManager();
EntityTransaction transac = em.getTransaction();
transac.begin();
for(int ii = 0; ii < array.length(); ii++) {
Game g = new Game();
g.setGameId(Conversion.stringEnInt(array.getJSONObject(ii).getString("fs_id")));
g.setGameTitle(array.getJSONObject(ii).getString("title"));
JSONArray test = array.getJSONObject(ii).getJSONArray("dates_released_dts");
try {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
Date parsedDate = dateFormat.parse(test.getString(0));
g.setGameReleased(parsedDate);
} catch(Exception e) {
}
em.persist(g);
System.err.println(array.getJSONObject(ii).getString("pretty_date_s"));
}
transac.commit();
em.close();
emf.close();
我有这个错误:
Exception in thread "main" javax.persistence.RollbackException: Exception [EclipseLink-69] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: A NullPointerException was thrown while extracting a value from the instance variable [gameId] in the object [database.orm.Game].
Internal Exception: java.lang.NullPointerException
Mapping: org.eclipse.persistence.mappings.DirectToFieldMapping[gameId-->game.game_id]
Descriptor: RelationalDescriptor(database.orm.Game --> [DatabaseTable(game)])
at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commit(EntityTransactionImpl.java:157)
at test.main(test.java:79)
Caused by: Exception [EclipseLink-69] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd)
你能告诉我我做错了什么吗?
解决方案
try(EntityManager em = emf.createEntityManager();
EntityTransaction transac = em.getTransaction()){
...
}
// don't need to close here em.. emf..
推荐阅读
- firebase - 缺少firebase api?我该如何解决?
- angular - Ionic 4 SQLite“无法读取未定义的属性'then'”错误
- javascript - 如果输入文件在没有表单的ajax请求中作为数组元素传递,为什么数组对象变为空
- nginx - 服务器上支持的 nginx 基本身份验证
- delphi - 关于使用 TIdTcpServer 的 FDQuery
- bash - 来自 Git Bash Here 的 Jupyter Notebook
- javascript - 来自 webpack 文档站点的代码问题
- forms - 我需要帮助将电子邮件注册表单的所有元素放在同一行
- python - Python - 使用 side_effect 模拟在类的 init 内部调用的函数
- wordpress - Wordpress 中的 Foundation 新闻下拉菜单始终保持打开状态