我试图提供应用程序在Spring与懒惰取实体之间的关系。
模型"用户":
Entity
@Table(name = "users")
@Component
public class User {
@Id
@SequenceGenerator(name = "userseq", sequenceName = "userseq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "userseq")
private Integer id;
// Some fields/getters/setters
@OneToMany(fetch = FetchType.LAZY, mappedBy = "user")
private List<Tracker> trakers;
}
“跟踪器”模型
@Entity
@Table(name = "trackers")
@Component
public class Tracker {
@Id
@SequenceGenerator(name = "tracker_seq", sequenceName = "tracker_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "tracker_seq")
private Integer id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id", insertable=false, updatable=false)
@OnDelete(action = OnDeleteAction.CASCADE)
private User user;
// Some fields/getters/setters
}
继承了带有@EntityGraph的JPA存储库。通过这一点,我试图为select用户提供与以下相关的所有跟踪器:
@Repository
@Transactional(readOnly = true)
public interface CrudUserRepository extends JpaRepository<User, Integer> {
@EntityGraph (attributePaths = {"trackers"}, type = EntityGraph.EntityGraphType.LOAD)
@Query("SELECT u FROM User u WHERE u.id=?1")
User getByIdWithTrackers(int id);
}
存储库类:
@Repository
public class AnketUserRepository implements UserRepository {
@Autowired
private CrudUserRepository crudRepository;
@Override
public User getByIdWithoutTrackers(int id) {
return crudRepository.findById(id).orElse(null);
}
@Override
public User getByIdWithTrackers(int id){
return crudRepository.getByIdWithTrackers(id);
}
}
和控制器:
@RestController ("userRestController")
@RequestMapping(value = UserRestController.USER_URL, produces =
MediaType.APPLICATION_JSON_VALUE)
public class UserRestController extends AbstractUserController {
public static final String USER_URL = "/customers";
@GetMapping("/{id}")
public User getByIdWithoutTrackers(@PathVariable int id) {
return super.getByIdWithoutTrackers(id);
}
@GetMapping("/{id}/withTrackers")
public User getByIdWithTrackers(@PathVariable int id) {
return super.getByIdWithTrackers(id);
}
}
查询“/customers/1”可以正常工作。它返回没有跟踪器的所有客户(相应地,延迟获取)。
但是"/顾客/1/with Tracker"返回以下异常:
lang.IllegalArgumentException: Unable to locate Attribute with the the given name [trackers] on this ManagedType [ru.spb.model.User]"}
哦,这是个愚蠢的错误。在用户界面中,我写“追踪者”。但在CrudUserRepository的AttributePath“追踪者”中。
冬眠5.2.12.1决赛 我想用CriteriaBuilder替换depreracted session.createCriteria(参见org.hibernate.Criteria),我有以下异常 在此ManagedType[com…DonneReference]上找不到具有给定名称[filtre]的属性 上: 其中(builder.equal(root.get(“filter”),filte
我有这个实体,它的ID定义在可识别类。 InventoryLoad的主键为InventoryLoadID 这是上述类的ID 我正在使用Criteria builder访问ID类的列。 要使用 Path 来获取此信息以获取 PK 的库存 ID 的路径。 获取此错误
所以我有这个kotlin项目: 获取此异常: 有一个小型演示项目:https://github.com/TomGrill/spring-hibernate-bug 应要求:
我有一个实体叫做 我正在尝试使用criteriaBuilder和谓词进行搜索 我在这里得到了例外 我曾提出一些类似的问题,但我没有得到任何解决办法。
我的服务类 和我的控制器类:
问题内容: 我试图找出为什么我的Web应用程序抛出一个 当我从中复制配置的一个姐妹悄悄地运行时。 我有: 通过右键单击并选择“新的持久性”从netbeans创建一个新的持久性,我不在乎我提供的实际值,但只需要在正确的目录中创建persistence.xml文件即可。 如下编辑我的context.xml,以匹配工作姐妹项目中的那个 编辑了我的web.xml以包含资源DataSource,如下所示 如