我想知道杰克逊@JsonManagedReference和@JsonBackReference杰克逊之间的区别吗?
为什么repository.save(myEntity) 不返回带有更新审计字段的更新实体?
MyEntityRepository.save(myEntity) 和随后的 MyEntityService.save(myEntity) 生成的实例没有更新的 UpdatedOn 日期。我已经验证数据库中的设置正确,因此我知道审核正在工作。返回的实例的 updateOn 日期对于插入是正确的,但对于更新则不正确。我宁愿不必在每次保存后立即执行 findById,特别是如果意图是 save() 返回更新的附加实例。
假设 updateOn 的设置是通过 @PreUpdate 钩子进行的,并且该钩子是在通过repository.save()调用entityManager.merge()期间触发的,我不明白为什么不会在返回的实例上设置该值。
示例代码:
@Entity
@DynamicUpdate
@DynamicInsert
@Table(name = "my_entity", schema = "public")
@SequenceGenerator(name = "pk_sequence", sequenceName = "my_entity_seq", allocationSize = 1)
@AttributeOverrides({@AttributeOverride(name = "id", column = @Column(name = "id", columnDefinition = "int"))})
@EntityListeners(AuditingEntityListener.class)
public class MyEntity {
protected Integer id;
@LastModifiedDate
private Date updatedOn;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "pk_sequence")
@Column(name = "id", nullable = false, columnDefinition = "bigint")
public Integer getId() { …Run Code Online (Sandbox Code Playgroud) 我有以下Spring Boot示例应用程序。疯狂的事情是,如果我@EnableMongoAuditing在SampleApplication bean上添加注释,则lastModifiedDate不会被填充createDate。这是为什么?我在网上搜索,许多人createDate在更新过程中出现清空问题,但是我没有更新。
文件类别:
@Document
public class SampleBean implements Persistable<String> {
@Id
public String id;
@CreatedDate
public LocalDateTime createDate;
@LastModifiedDate
public LocalDateTime lastModifiedDate;
public String name;
@Override
public String getId() {
return id;
}
@Override
public boolean isNew() {
return id != null;
}
}
Run Code Online (Sandbox Code Playgroud)
仓库接口:
@Repository
public interface SampleBeanRepository extends MongoRepository<SampleBean, String> {
}
Run Code Online (Sandbox Code Playgroud)
休息控制器:
@RestController
public class WebService {
@Autowired
private SampleBeanRepository repository;
@RequestMapping("/insert")
public String insert() {
SampleBean sampleBean …Run Code Online (Sandbox Code Playgroud) JPA 2.0提供了一种使用JPQL表达式TYPE按子类进行过滤的方法,例如:
SELECT e
FROM entity e
WHERE TYPE(e) = :entityType
Run Code Online (Sandbox Code Playgroud)
其中参数entityType是鉴别器列的值.
考虑到鉴别器列似乎不受限制,建议使用JPA标准构建器实现相同的方法是什么?
我正在使用JPA 2.1,到目前为止唯一的解决方案是将鉴别器列映射为Java实体中的只读字段,但我不确定这是否是受支持的功能.
我需要创建一个动态查询.我尝试使用JPQL,但不能.例如:
public List get(String category, String name, Integer priceMin, Integer priceMax){
List<Prod> list;
String query = "select p from Prod p where 1<2 ";
String queryCat="";
String queryName="";
String queryPriceMin="";
String queryPriceMax="";
String and = " and ";
if (!category.isEmpty()){
query+=and+"p.cat.name=:category ";
}
if (!name.isEmpty()){
query+=and+"p.name=:name ";
}
if (priceMin!=null){
query+=and+"p.price>=:priceMin ";
}
if (priceMax!=null){
query+=and+"p.price<=:priceMax ";
}
return list = entityManager.createQuery(query)
.setParameter("category", category)
.setParameter("name",name)
.setParameter("priceMin", priceMin)
.setParameter("priceMax", priceMax)
.getResultList();
}
Run Code Online (Sandbox Code Playgroud)
如果有所有参数,查询运行,但如果没有这样的参数category我有异常java.lang.IllegalArgumentException: Parameter with that name [category] …
我无法在IntelliJ中使用thymeleaf启动基于Spring Boot的应用程序.我在maven中有我的项目,当我从命令行启动时:
java -jar myProject.war
一切正常.但是当我在IDE中配置运行应用程序时,我有以下错误:
[class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-02-25 19:00:24.881 WARN 4663 --- [ main] org.thymeleaf.templatemode.TemplateMode : [THYMELEAF][main] Template Mode 'HTML5' is deprecated. Using Template Mode 'HTML' instead.
2017-02-25 19:00:25.017 WARN 4663 --- [ main] ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'viewResolver' defined in class path resource [org/springframework/boot/autoconfigure/web/WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter.class]: Initialization of bean failed; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration$Thymeleaf3Configuration$Thymeleaf3ViewResolverConfiguration': Unsatisfied dependency expressed through constructor parameter 1; …Run Code Online (Sandbox Code Playgroud) 因此,如果我使用此代码,我会得到一个没有任何内容的屏幕.我应该显示一个绿色矩形.以前有这个问题,但无法解决它.
package _47b3n.squaregen;
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import javax.swing.JFrame;
public class Main extends Component {
private static final long serialVersionUID = 5547487570978675247L;
public static void main(String [] args) {
new Main();
}
public Main() {
JFrame frame = new JFrame();
frame.setSize(200, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setVisible(true);
repaint();
}
public void render(Graphics g) {
g.setColor(Color.GREEN);
g.drawRect(10,10,10,10);
}
}
Run Code Online (Sandbox Code Playgroud) java ×7
jpa ×3
spring-boot ×2
spring-data ×2
auditing ×1
awt ×1
criteria-api ×1
jackson ×1
jpql ×1
maven ×1
spring ×1
swing ×1