我有以下课程:
DBEntity.java
@MappedSuperclass
public class DBEntity implements Persistable<Long>, Serializable, Comparable<DBEntity> {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(
strategy = GenerationType.SEQUENCE,
generator = "default_generator"
)
private Long id;
@ManyToOne()
@JoinColumn(
name = "created_by",
referencedColumnName = "id",
insertable = false,
updatable = false,
foreignKey = @ForeignKey(
name = "created_by_user_id_fk"
)
)
private User createdBy;
@Column(
name = "created_on",
nullable = false,
columnDefinition = "TIMESTAMP WITHOUT TIME ZONE"
)
private Date createdOn;
//shortened
}
使用者JAVA
@Entity(name = "User")
@Table(
name = "\"user\"",
uniqueConstraints = {
@UniqueConstraint(name = "user_username_unique", columnNames = "username")
}
)
@SequenceGenerator(
name = "default_generator",
sequenceName = "user_role_sequence",
allocationSize = 1
)
public class User extends DBEntity {
@Column(
name = "username",
nullable = false,
columnDefinition = "TEXT"
)
private String username;
//shortened
}
用户服务。JAVA
public class UserService {
@Autowired
private UserRepository userRepository;
public User saveUser(User user) {
if (user.isNew()) {
user.setCreatedOn(new Date());
user.setCreatedBy(getAuthenticatedUser());
} else {
user.setUpdatedOn(new Date());
user.setUpdatedBy(getAuthenticatedUser());
}
return userRepository.save(user);
}
private User getAuthenticatedUser() {
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
return userRepository.findFirstByUsername(auth.getName());
}
}
UserRepository.java
public interface UserRepository extends AbstractRepository<User, Long> {}
发现了问题。序列生成器与测试数据冲突,所以它试图给新用户一个已经在数据库中的id
我有一个数据已经保存在我的数据库基于我的存储库和服务。我想保存另一个数据与邮递员只改变播放器id。但它不是创建一个新的实体数据。它更新现有的实体数据。我的问题是如何更新一个数据由我的服务当它找到一个现有的id。但当它找到一个新的id将保存一个新的数据到数据库。 这是我的回购: 这是我的服务:
我需要从消费者内部访问saga存储库,以读取与正在消费的消息相关的saga的当前状态。 场景:我有一个外部服务,当这个服务使用来自传奇的事件时,我想看看传奇是否仍然处于正确的状态,因为如果同时传奇改变了状态,消费者必须跳过事件。 如何:我当然可以通过使用它的本机框架来查询选择的saga存储库实现,但是我想使用一个抽象,一个接口,从消费者内部加载saga状态,以便将来能够切换到不同的存储库实现。 感
我使用JPA存储库将简单的数据对象保存到数据库中。为了避免重复,我在多个字段上创建了一个唯一约束。如果现在根据唯一字段/约束保存一个副本,我想捕获异常,记录对象,应用程序应继续并保存下一个对象。但在这里我总是会遇到这样的异常:“org.hibernate.AssertionFailure:de.test.PeopleDBO条目中的空id(在异常发生后不要刷新会话)”。 一般来说,我知道hibern
我在使用spring存储库和服务的代码中遇到了这个问题,在我的spring项目中,它不适用于用户和角色,这是他们的服务和存储库的问题: 这是用户实现存储库: 这是用户的存储库和服务: 用户服务 试图消除空白,但这是同样的问题,我搜索了很多关于它,但没有找到任何解决方案。
mvn-x编译命令的输出 Apache Maven 3.0.4(R1232337;2012-01-17 14:14:56+0530)Maven Home:C:\java\apache-maven-3.0.4\bin.Java版本:1.6.0_37,供应商:Sun Microsystems Inc.Java Home:C:\程序文件\Java\JDK1.6.0_37\JRE默认区域设置:en_IN,