SpringBoot用Para实现PostgreSQL独立列存储及DAO创建失败问题
Para框架SpringBoot使用问题解答
1. 将数据存储到PostgreSQL独立列
Para默认使用JSONB列存储对象,要切换到独立列存储,需按以下步骤操作:
- 修改配置:在
application.properties中添加:para.dao.postgres.use_json_columns=false - 自定义实体类:让数据实体继承
ParaObject,并为需要映射的字段添加JPA@Column注解,示例:
配置完成后,Para会自动将实体字段映射到PostgreSQL的对应独立列。import com.erudika.para.core.ParaObject; import javax.persistence.Column; import javax.persistence.Entity; @Entity public class CustomEntity extends ParaObject { @Column(name = "user_name") private String userName; @Column(name = "age") private Integer age; // getter、setter方法 }
2. Para.getDAO.create(obj)无效果的解决
Para.getDAO()获取的是本地DAO实例,Spring Boot环境下若未正确初始化Para上下文或配置,会导致调用失效;而ParaClient通过HTTP请求Para服务器API,因此可正常工作。解决方法:
- 确保引入PostgreSQL DAO依赖(以Maven为例):
<dependency> <groupId>com.erudika</groupId> <artifactId>para-dao-postgres</artifactId> <version>你的Para版本号</version> </dependency> - 通过配置类初始化并注入DAO实例:
import com.erudika.para.core.DAO; import com.erudika.para.persistence.Persistence; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class ParaConfig { @Bean public DAO paraDAO() { Persistence.init(); return Persistence.getDAO(); } } - 在业务类中注入DAO使用,而非直接调用
Para.getDAO():@Service public class EntityService { private final DAO paraDAO; public EntityService(DAO paraDAO) { this.paraDAO = paraDAO; } public void createEntity(CustomEntity entity) { paraDAO.create(entity); } }
内容的提问来源于stack exchange,提问作者alfosa
相关产品推荐
相关产品推荐

